贪心算法---求解最优化问题

  • 求解最优化问题
例题:

月饼收益最优化:
月饼种类 市场需求量
对应的库存
对应的总售价
求:最大收益(出售哪些月饼收益最大)

例:
3 20
18 15 10
75 72 45

94.5(15分的72售价都出+5分的45售价的)

代码:
/*贪心算法:求最优化问题
    有月饼的种类、库存、总售价;市场需求量
    求最大收益。
例如:
3 20
18 15 10
75 72 45*/

#include<bits/stdc++.h>
using namespace std;

//构造结构体:月饼的几个专有属性
struct mooncake{
    double store;//库存
    double sell;//总售价
    double price;//单价
}cake[100];

bool cmp(mooncake a,mooncake b){
    return a.price > b.price;
}


int main(){
    int n;//种类
    double D;//总需求量
    scanf("%d%lf",&n,&D);

    for(int i = 0; i < n; i++){
        scanf("%lf",&cake[i].store);
    }

    for(int i = 0; i < n; i++){
        scanf("%lf",&cake[i].sell);
        cake[i].price=cake[i].sell/cake[i].store;
    }

    sort(cake,cake+n,cmp);

    double sum;
    for(int i = 0; i < n; i++){
        if(cake[i].store < D){//月饼量不够需求量,就全部拿出来
            D = D - cake[i].store;//更新需求量
            sum = sum + cake[i].sell;//更新收益
        }else{//如果月饼量够了需求量,就拿出需求量的部分
            sum = sum + cake[i].price*D;
            break;
        }
    }
    printf("%.2f",sum);
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值