大佬帮忙看看,为什么自己用编译器运行没错但是4个wa

P1478 陶陶摘苹果(升级版)

schKatze @ 2020-02-08 14:01:28

#include<stdio.h>
int main(void)
{
    int count,n,s,a,b,i,x,y,j,sum,p,number,t[100];
    while(scanf("%d%d",&n,&s)!=-1)
    {
        scanf("%d%d",&a,&b);
        sum=0;
        count=0;
        for(i=0;i<n;i++)
        {
            scanf("%d%d",&x,&y);
            if(x<=a+b)
            {
                t[count]=y;
                sum+=y;
                count++;
            }
        }//筛选掉第一个条件高度不符合的
        for(i=1;i<=count-1;i++)
        {
            for(j=0;j<count-i;j++)
            {
                if(t[j]<t[j+1])
                {p=t[j];t[j]=t[j+1];t[j+1]=p;}
            }
        }//给符合条件的数从大到小排序
        number=count;
        for(i=1;i<=count;i++)
        {
            if(sum>s)
            {
                sum=sum-t[i];
                number--;
            }
            else
            break;
        }//先减最大的数
        printf("%d\n",number);
    }
    return 0;
}

by woshizhazha @ 2020-02-08 18:23:50

为什么要用while语句?你的程序是个死循环诶, 然后你最后的那个for循环那里的i应该初始化为0,不然会漏掉t[0]?


|