洛谷P1478 陶陶摘苹果(升级版)
程序员文章站
2024-03-24 13:59:52
...
#include<stdio.h>
#define max 6000 //申请的空间一开始是1000,有一组样例没通过;申请的数组空间不够;
int main()
{
int n,s;
int a,b;
scanf("%d %d",&n,&s);
scanf("%d %d",&a,&b);
int x[max],y[max],i;
for(i = 0;i < n;i++){
scanf("%d %d",&x[i],&y[i]);
}
int j,temp;
for(i = 0;i < n-1;i++){
for(j = 0;j < n-i-1;j++){
if(y[j] > y[j+1]){
temp = y[j];
y[j] = y[j+1];
y[j+1] = temp;
temp = x[j];
x[j] = x[j+1];
x[j+1] = temp;
}
}
}
int cnt=0;//一开始没有赋初值,导致样例全部没有通过;
for(i = 0;i < n;i++){
if(a+b >= x[i] && s >= y[i]){
cnt++;
s -= y[i];
}
}
printf("%d",cnt);
return 0;
}
总计:1. 做题要看清数据范围,申请数组空间要足够;
2.对与sum,cnt等计数,求和变量要注意赋初值;