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]?