大佬路过不妨看看,算法思路对了,虽然没通过

P1478 陶陶摘苹果(升级版)

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

@一只大头 冒泡排序这么打也是可以的,就是换了一下冒泡的顺序


|