样例过了,其他不行,求助
查看原帖
样例过了,其他不行,求助
1652431
Dynamic_Icon楼主2025/1/26 16:23
#include <stdio.h>

int main(){
    int count;
    float capacity,money=0;
    float heap[100][2],average[100];//heap[0]存重量,heap[1]存价值
    int i,j,k,t;
    scanf("%d",&count);
    scanf("%f",&capacity);
    //录入数据
    for(i=0;i<count;i++){
        for(k=0;k<2;k++){
            scanf("%f",&heap[i][k]);
        }
        average[i]=heap[i][k-1]/heap[i][k-2];//求出每堆的单价
    }
    while(capacity>0){
        t=0;//默认最大值的下标为零
        //遍历找出相对最大值下标
        for(i=0;i<count-1;i++){
            if(average[i+1]>=average[i]){
                t=i+1;
            }
        }
        //背包不会满
        if(capacity-heap[t][0]>=0){
            capacity-=heap[t][0];
            money+=heap[t][1];
        }
        //背包会满
        else{
            money+=average[t]*capacity;
            capacity=0;
        }
        average[t]=0;//该最大值失效
    }
    printf("%.2f",money);
    return 0;
}
2025/1/26 16:23
加载中...