80分,求大佬帮忙看看

P1478 陶陶摘苹果(升级版)

holiday_1999 @ 2018-04-22 16:09:55

#include <iostream>
#include <limits.h>

using namespace std;
int i,j,k,sum=0,all=0;

int main()
{
    int n,s,a,b;
    int x[5001][2];
    cin>>n>>s>>a>>b;
    int high=a+b;
    for(i=0;i<n;i++){
        for(int j=0;j<2;j++){
            cin>>x[i][j];
        }
        if(x[i][0]>high) {
            i--;n--;
        }
    }
    k=i;
    for(i=0;i<k-1;i++){
        int bo=i,t;
        for(j=i+1;j<k;j++){
            if(x[j][1]<x[bo][1]){
                bo=j;
            }
        }
        t=x[i][1];x[i][1]=x[bo][1];x[bo][1]=t;
    }
    for(i=0;i<k;i++){
        if(sum+x[i][1]<s){
            sum+=x[i][1];
            all++;
        }
    }
    cout<<all<<endl;
    return 0;
}

by miaojiexi @ 2018-04-22 16:16:37

你的代码风格有点奇怪。


by holiday_1999 @ 2018-04-23 22:46:12

那我改一下,大佬帮忙看看哈

#include <iostream>
#include <limits.h>

using namespace std;
int i,j,k,sum=0,all=0;

int main()
{
    int n,s,a,b;
    int x[5001][2];
    cin>>n>>s>>a>>b;
    int high=a+b;
    for(i=0;i<n;i++)
    {
        for(int j=0;j<2;j++)
        {
            cin>>x[i][j];
        }
        if(x[i][0]>high)
        {
            i--;n--;
        }
    }
    k=i;
    for(i=0;i<k-1;i++)
    {
        int bo=i,t;
        for(j=i+1;j<k;j++)
        {
            if(x[j][1]<x[bo][1])
            {
                bo=j;
            }
        }
        t=x[i][1];x[i][1]=x[bo][1];x[bo][1]=t;
    }
    for(i=0;i<k;i++)
    {
        if(sum+x[i][1]<s)
        {
            sum+=x[i][1];
            all++;
        }
    }
    cout<<all<<endl;
    return 0;
}

by ZJH365 @ 2018-08-01 10:21:56

是小于等于吧 if(sum+x[i][1]<s)


|