C++实现贪心算法解决超市找零问题
### 💡贪心算法超市找零问题分析 贪心算法是一种在每一步选择中都采取当前状态下最优(即最有利)的选择,从而希望导致结果是全局最优的算法。在超市找零问题中,目标是用最少数量的硬币来完成找零。为了实现这一目标,每次都选择面值最大且不超过剩余找零金额的硬币,直到找零完成。 ### 📝C++代码实现 ```cpp #include <iostream> #include <vector> // 找零函数 std::vector<int> coinChange(int amount) { // 定义硬币面值,按从大到小排序 std::vector<int> coinValues = {25, 10, 5, 1}; std::vector<int> result; // 遍历每种硬币面值 for (int coin : coinValues) { // 计算当前面值硬币的使用数量 while (amount >= coin) { result.push_back(coin); amount -= coin; } } return result; } int main() { int amount = 63; // 假设需要找零63美分 std::vector<int> change = coinChange(amount); std::cout << "找零的硬币组合为: "; for (int coin : change) { std::cout << coin << " "; } std::cout << std::endl; return 0; } ``` ### 📚代码解释 1. **定义硬币面值**:`coinValues` 数组存储了可用的硬币面值,按从大到小的顺序排列。 2. **遍历硬币面值**:在 `coinChange` 函数中,遍历每种硬币面值,对于每种面值,只要剩余找零金额大于等于该面值,就使用该面值的硬币,并更新剩余找零金额。 3. **存储结果**:将使用的硬币面值存储在 `result` 向量中。 4. **主函数**:在 `main` 函数中,调用 `coinChange` 函数进行找零,并输出找零的硬币组合。 ### ⚠️注意事项 - 该算法假设硬币面值是固定的,并且可以无限供应。 - 贪心算法并不一定能得到全局最优解,在某些情况下,可能存在更优的找零方案。例如,当硬币面值为 `{1, 3, 4}`,需要找零 6 时,贪心算法会选择 `4 + 1 + 1`,而最优解是 `3 + 3`。 ######[AI问答 | 601点数解答 | 2026-03-28 16:07:03]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)346
- C3期末:精准求解 3 - 20 范围内数列第 k 项值及注意要点(字节豆包 | 242点数解答 | 2025-06-15 11:26:19)140
- C++求解:查找3 - 20项数列第k项值及注意要点(字节豆包 | 325点数解答 | 2025-06-15 11:27:11)158
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)316
- Python 实现贪心算法:巧解找零钱问题及需注意要点 (字节豆包 | 398点数解答 | 2025-01-04 18:06:11)118
- C++ 破解“国王游戏”弱化版:贪心排序算法巧求最少最大奖赏(DeepSeek | 550点数解答 | 2025-04-28 18:16:50)399
- 巧妙贪心排序:解决国王游戏中大臣奖赏最大化问题(DeepSeek | 1002点数解答 | 2025-05-10 20:58:15)194
- C++ 实现:用贪心算法解国王游戏(弱化版),使大臣获赏最大值最小(DeepSeek | 507点数解答 | 2025-05-10 20:59:01)175
- 2024 STEMA T6:解密T1188超难密码锁,Python区间DP解法揭秘!(字节豆包 | 718点数解答 | 2025-11-08 22:09:01)94
- DotA 1vN 难题:巧用贪心策略最小化 HP 损耗!(DeepSeek | 609点数解答 | 2026-01-01 00:14:47)26
- P1016禾木分核桃问题:巧用贪心算法求解最少分配核桃数(字节豆包 | 404点数解答 | 2026-02-07 18:37:04)27
- CSP - J组:小核桃将积木堆成不超m堆的最小能量计算及代码详解(字节豆包 | 780点数解答 | 2026-02-07 18:38:58)21