假设商店中的货品价格(R)皆不大于100元(且为整数)。若顾客付款100元,求最少给顾客的货币数(货币面值仅有100元、50元、10元、5元、1元5种)c++
时间: 2024-10-11 10:06:50 浏览: 50
在C++中,你可以通过贪心算法来解决这个问题。首先,从大面额的货币开始找零,尽可能地使用大面额的货币,然后依次降低到小面额。以下是一个简单的伪代码步骤:
1. 初始化变量,例如 `change` 存储找零总额,`coins[]` 存储五种货币的数量,假设初始值都为0。
2. 当 `change` 大于0且 `coins[4]`(1元)不为空时,先用尽量多的1元找零,直到 `change` 减少到1元以下。
3. 如果 `change` 还大于0,继续用5元,依此类推,直到找到能减去当前 `change` 的最大面额货币。
4. 当 `change` 变为0时,就找到了所有需要的最小货币数量。
下面是一个简化的C++代码片段来实现这个过程:
```cpp
#include <iostream>
using namespace std;
int main() {
int total = 100; // 客户付款金额
int coins[] = {100, 50, 10, 5, 1}; // 货币面额数组
for (int i = 4; i >= 0 && total > 0; i--) { // 从大面额到小面额
while (total >= coins[i]) { // 只要可以减去就减
total -= coins[i];
coins[i]--;
}
}
cout << "最少给顾客的货币数: " << coins[0] + coins[1] + coins[2] + coins[3] + coins[4] << endl;
return 0;
}
```
阅读全文