
做的时候想到了是贪心的思想,但是对于排序以及如何满足条件退出还是不熟练,代码是理解思想照着别人打的,希望下一次可以自己做出来,下面是完整的代码
#include<iostream>
#include<algorithm>
using namespace std;
struct mooncake {
float ku;
float money;
float average;
}cake[1000];
int cmp(struct mooncake a, struct mooncake b) {
return a.average >= b.average;
}
int main() {
int n, d, d1, i = 0, sold = 0, all = 0;
float income = 0, allmoney = 0;
cin >> n >> d;
d1 = d;
for (i = 0; i < n; i++) {
cin >> cake[i].ku;
all = all + cake[i].ku;
}
for (i = 0; i < n; i++) {
cin >> cake[i].money;
allmoney = allmoney + cake[i].money;
cake[i].average = cake[i].money / cake[i].ku;
}
sort(cake, cake + n, cmp);
i = 0;
if (all <= d)
printf("%.2f", allmoney);
else {
while (sold != d) {
if (cake[i].ku < d1) {
sold = sold + cake[i].ku;
income = income + cake[i].money;
d1 = d1 - cake[i].ku;
}
else {
sold = sold + d1;
income = income + d1*cake[i].average;
}
i++;
}
printf("%.2f", income);
}
return 0;
}
本文通过贪心算法解决月饼销售问题,实现最大化收益。代码中使用了结构体存储月饼单价和重量,并根据平均价格进行排序,确保每次选择性价比最高的月饼进行售卖。
188

被折叠的 条评论
为什么被折叠?



