求大佬帮忙,wa

P1478 陶陶摘苹果(升级版)

杨1振1宇 @ 2018-08-18 21:49:39

include<stdio.h>

int a[5001],b[5001]; int main() { int i,n,s,k=0,x,y,sw; scanf("%d %d",&n,&s); scanf("%d %d",&x,&y); for(i=1;i<=n;i++) scanf("%d %d",&a[i],&b[i]); for(i=1;i<=n;i++) for(int j=1;j<n;j++) if(b[j]>b[j+1]){ sw=b[j]; b[j]=b[j+1]; b[j+1]=sw; sw=a[j]; a[j]=a[j+1]; a[j+1]=sw; } for(i=1;i<=n;i++){ if(x+y>a[i])k++,s-=b[i]; if(s<0)break; } printf("%d\n",k); return 0; }


by 杨1振1宇 @ 2018-08-18 21:51:41

#include<stdio.h>
int a[5001],b[5001];
int main()
{
    int i,n,s,k=0,x,y,sw;
    scanf("%d %d",&n,&s);
    scanf("%d %d",&x,&y);
    for(i=1;i<=n;i++)
        scanf("%d %d",&a[i],&b[i]);
    for(i=1;i<=n;i++)
        for(int j=1;j<n;j++)
            if(b[j]>b[j+1]){
                sw=b[j];
                b[j]=b[j+1];
                b[j+1]=sw;
                sw=a[j];
                a[j]=a[j+1];
                a[j+1]=sw;
            }
    for(i=1;i<=n;i++){
        if(x+y>a[i])k++,s-=b[i];
        if(s<0)break;
    }
    printf("%d\n",k);
    return 0;
}

by 捻红尘似水 @ 2018-08-18 22:03:52

for(i=1;i<=n;i++){
        if(x+y>a[i])k++,s-=b[i];
        if(s<0)break;
    }

改为

 for(i=1;i<=n;i++){
        if(x+y>a[i]&&s>=b[i])k++,s-=b[i];
        if(s<0)break;
    }

因为有可能剩下的体力不够摘第i个苹果


by 捻红尘似水 @ 2018-08-18 22:09:56

冒泡排序。。。

sort了解一下


by 捻红尘似水 @ 2018-08-18 22:22:33

好吧还有错

正在做的题实在不会懒得想了

试交了一下 刚才我发的代码,for循环里

   if(x+y>a[i]

改成

   if(x+y>=a[i]

by 杨1振1宇 @ 2018-08-24 20:06:51

谢谢大佬


|