2019-05-09 团体程序设计天梯赛-练习集 L2-003 月饼 (25 分)

本题难度:

简单~

思路分析

这是个简单的贪心问题,通过库存与售价算出单价。
单价高的物品优先出售。

注意问题

数据存储要选对,该用double的别用成int

C++代码

#include
#include
#define iIN(x,y) for(int i=x;i>N>>D;
    iIN(0,N){
        cin>>kg[i];
    }
    iIN(0,N){
        cin>>price[i];
    }
    iIN(0,N){
        rate[i]=price[i]/kg[i];
        //cout<0){ //还有库存就循环 
        //找单价最大并且有库存的
        int which=-1;
        double r=-1;
        iIN(0,N){
            if(kg[i]>0 && rate[i]>r){
                which=i;
                r=rate[i];
            }
        } 
        
        if(which==-1)break;//所有物品都没有库存了
        //首先是看这件物品是不是能全部出售
        if(kg[which]<=D){
            D-=kg[which];
            total+=price[which];
            kg[which]=0;
        }
        else
        {
            total+=D*rate[which];
            break;  
        }
    } 
    printf("%.2f",total);
    
    return 0;
}

你可能感兴趣的:(2019-05-09 团体程序设计天梯赛-练习集 L2-003 月饼 (25 分))