杨1振1宇 @ 2018-08-18 21:49:39
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
谢谢大佬