yongc++最少 硬币数的找零DEVC++
时间: 2024-01-21 20:18:33 浏览: 25
以下是使用 C++ 编写的找零问题的代码,它使用了贪心算法来计算最少的硬币数:
```c++
#include <iostream>
using namespace std;
int main()
{
int coins[] = { 1, 5, 10, 25, 50 }; // 可用的硬币面额
int n = sizeof(coins) / sizeof(coins[0]); // 可用的硬币数
int amount; // 需要找零的金额
cout << "请输入需要找零的金额:";
cin >> amount;
int count = 0; // 最少的硬币数
for (int i = n - 1; i >= 0; i--) {
while (amount >= coins[i]) {
amount -= coins[i];
count++;
}
}
cout << "最少需要 " << count << " 个硬币。" << endl;
return 0;
}
```
此代码使用 `coins` 数组存储可用的硬币面额,并使用 `n` 变量存储可用的硬币数。然后,用户输入需要找零的金额。在循环中,我们从最大的硬币面额开始向下遍历,如果当前硬币面额小于等于剩余的需要找零的金额,则从剩余的金额中减去当前硬币面额,并将硬币数量加一。最后输出最少的硬币数。
请注意,此代码仅使用了贪心算法,并不是对于所有情况都能得到最优解。例如,如果可用的硬币面额为 {1, 3, 4},需要找零的金额为 6 时,贪心算法会选择两个面额为 3 的硬币,但是最优解是选择一个面额为 4 的硬币和一个面额为 1 的硬币。因此,在实际应用中,需要根据具体情况选择适当的解决方案。