C++贪心算法:巧用策略为小a采购巧克力,算出最大快乐值!
以下是使用 C++实现的贪心算法解决此问题的代码: ```cpp #include <iostream> #include <vector> #include <algorithm> // 结构体表示巧克力的价格和数量 struct Chocolate { int price; int quantity; }; // 比较函数,按照单位价格从低到高排序巧克力 bool compareChocolates(Chocolate a, Chocolate b) { return (double)a.price / a.quantity < (double)b.price / b.quantity; } int maxHappiness(int m, std::vector<Chocolate> chocolates) { // 对巧克力按照单位价格排序 std::sort(chocolates.begin(), chocolates.end(), compareChocolates); int happiness = 0; for (const auto& chocolate : chocolates) { // 计算可以购买的该种巧克力数量 int numBought = std::min(m / chocolate.price, chocolate.quantity); // 更新快乐值和剩余金额 happiness += numBought * 11; m -= numBought * chocolate.price; } return happiness; } int main() { std::vector<Chocolate> chocolates = { {10, 5}, {20, 3}, {30, 2} }; int m = 50; int happiness = maxHappiness(m, chocolates); std::cout << "最大快乐值: " << happiness << std::endl; return 0; } ``` 1. 注意输入的巧克力信息要准确,包括价格和数量。 2. 排序函数的比较逻辑要保证能正确按照单位价格排序。 3. 在计算可购买数量时,要考虑剩余金额和巧克力的库存数量。 ######[AI写代码神器 | 407点数解答 | 2024-12-20 19:15:35]
- Python实现自动售货机价格查询:规避输入陷阱与次数控制的代码解析 (字节豆包 | 403点数解答 | 2025-11-24 00:18:28)50
- 高考毕业晚会难题:从学生能力值求最大默契程度的Python解法(字节豆包 | 487点数解答 | 2026-01-24 13:10:18)57
- Python 实现贪心算法:巧解找零钱问题及需注意要点 (字节豆包 | 398点数解答 | 2025-01-04 18:06:11)127
- C++ 破解“国王游戏”弱化版:贪心排序算法巧求最少最大奖赏(DeepSeek | 550点数解答 | 2025-04-28 18:16:50)422
- 巧妙贪心排序:解决国王游戏中大臣奖赏最大化问题(DeepSeek | 1002点数解答 | 2025-05-10 20:58:15)207
- C++ 实现:用贪心算法解国王游戏(弱化版),使大臣获赏最大值最小(DeepSeek | 507点数解答 | 2025-05-10 20:59:01)189
- 2024 STEMA T6:解密T1188超难密码锁,Python区间DP解法揭秘!(字节豆包 | 718点数解答 | 2025-11-08 22:09:01)107
- DotA 1vN 难题:巧用贪心策略最小化 HP 损耗!(DeepSeek | 609点数解答 | 2026-01-01 00:14:47)35
- P1016禾木分核桃问题:巧用贪心算法求解最少分配核桃数(字节豆包 | 404点数解答 | 2026-02-07 18:37:04)41
- CSP - J组:小核桃将积木堆成不超m堆的最小能量计算及代码详解(字节豆包 | 780点数解答 | 2026-02-07 18:38:58)33
- Python切片操作巧解经典算法:二维数组90°旋转(阿里通义 | 205点数解答 | 2023-10-31 11:05:29)351
- 揭秘iOS开发:常用算法大集合,提升应用性能与体验!(阿里通义 | 246点数解答 | 2023-11-08 00:43:08)303