付款问题 面值为5元,2元,1元,5角,2角,1角的货币,找给顾客现金,要求付出的货币数量最少。用贪心法解决该问题。c语言
时间: 2024-06-13 18:08:28 浏览: 141
以下是用C语言实现的贪心算法解决付款问题的代码:
```c
#include <stdio.h>
int main()
{
int money[6] = {500, 200, 100, 50, 20, 10}; // 面值,单位为分
int count[6] = {0}; // 每种面值的货币数量
int total = 0; // 总金额,单位为分
int i;
printf("请输入需要找零的金额(元角分之间用空格隔开):");
scanf("%d %d %d", &total, &i, &i); // 只需要读入元和角,分直接忽略
total = total * 100 + i * 10; // 将元和角转换为分
for (i = 0; i < 6; i++) {
count[i] = total / money[i];
total = total % money[i];
}
printf("找零如下:\n");
for (i = 0; i < 6; i++) {
if (count[i] > 0) {
printf("%d个%d分\n", count[i], money[i]);
}
}
return 0;
}
```
相关问题
1.付款问题 面值为5元,2元,1元,5角,2角,1角的货币,找给顾客现金,要求付出的货币数量最少。用贪心法解决该问题。
以下是使用贪心算法解决付款问题的步骤:
1. 将货币面值按照从大到小的顺序排列,即5元、2元、1元、5角、2角、1角。
2. 从面值最大的货币开始,尽可能多地找给顾客,直到无法再找出该面值的货币为止。如果该面值的货币无法找出,则尝试下一个面值的货币。
3. 重复步骤2,直到找完所有需要找的钱。
根据上述步骤,我们可以使用以下代码实现:
```python
def pay_change(amount):
coins = [5, 2, 1, 0.5, 0.2, 0.1] # 货币面值
change = [] # 存储找零的货币
for coin in coins:
while amount >= coin:
amount -= coin
change.append(coin)
return change
# 示例
change = pay_change(4.6)
print(change) # 输出:[2, 2, 0.5, 0.1, 0.1]
```
.付款问题 面值为5元,2元,1元,5角,2角,1角的货币,找给顾客现金,要求付出的货币数量最少。用贪心法解决该问题。c语言
以下是用C语言实现的贪心算法解决付款问题的代码:
```c
#include <stdio.h>
int main()
{
int money[6] = {500, 200, 100, 50, 20, 10}; // 存储货币值的数组,单位为分
int count[6] = {0}; // 存储每种货币数量的数组
int total = 0; // 总金额,单位为分
int pay = 0; // 顾客支付的金额,单位为分
int change = 0; // 应找的零钱,单位为分
printf("请输入顾客支付的金额(元角分之间用空格隔开):");
scanf("%d %d %d", &total, &pay, &change);
total = total * 100 + pay * 10 + change; // 将元角分转换为分
for (int i = 0; i < 6; i++) {
count[i] = total / money[i]; // 计算当前面值的货币数量
total = total % money[i]; // 计算剩余的金额
}
printf("找零:\n");
for (int i = 0; i < 6; i++) {
if (count[i] > 0) {
printf("%d个%d分\n", count[i], money[i]); // 输出找零的货币数量和面值
}
}
return 0;
}
```
阅读全文