shielder @ 2019-12-12 20:55:57
#include <stdio.h>
int y[6000],sum[6000];
void swap(int i,int j) //交换元素
{
int temp;
temp=y[i]; y[i]=y[j]; y[j]=temp;
}
void bubble(int len) //冒泡排序
{
int i,j;
for(i=0;i<len;i++){
for(j=len-1;j>i;j--){
if(y[j-1]>y[j]) swap(i,j);
}
}
}
int main()
{
int s,n,i,a,b,xre,yre,len=0;
scanf("%d%d%d%d",&n,&s,&a,&b);
for(i=0;i<n;i++){
scanf("%d%d",&xre,&yre);
if(xre<=a+b){ //判断能否够着
y[len]=yre;//存进去
len++;
}
}
bubble(len); //进行大小排序,小的在前
sum[0]=y[0];
for(i=1;i<len;i++){ //累积求和
sum[i]=sum[i-1]+y[i];
if(sum[i]>s) break;
}
printf("%d",i);
return 0;
}
by __gcd @ 2019-12-12 21:08:44
@shielder 冒泡排序是这么打的吗?
by shielder @ 2019-12-12 22:13:22
@一只大头 谢谢兄弟,已经解决了,那个冒泡排序里面的swap里的东西不应该是swap(i,j),应该是swap(j-1,j)
by shielder @ 2019-12-12 22:13:57
@一只大头 冒泡排序这么打也是可以的,就是换了一下冒泡的顺序