c语言贪心算法找零钱
时间: 2023-07-12 13:08:08 浏览: 198
下面是一个用C语言实现的贪心算法找零钱的例子:
```c
#include <stdio.h>
void find_change(int total, int *coins, int size) {
int i, count;
printf("需要找的零钱总额为 %d 元\n", total);
printf("可以使用的硬币有:");
for (i = 0; i < size; i++) {
printf("%d元 ", coins[i]);
}
printf("\n");
for (i = 0; i < size; i++) {
count = total / coins[i];
if (count > 0) {
printf("需要%d个%d元硬币\n", count, coins[i]);
total -= count * coins[i];
}
if (total == 0) {
break;
}
}
if (total > 0) {
printf("无法凑出%d元零钱\n", total);
}
}
int main() {
int coins[] = {1, 2, 5, 10, 20, 50, 100};
int size = sizeof(coins) / sizeof(int);
int total = 87;
find_change(total, coins, size);
return 0;
}
```
这个例子中假设有1元、2元、5元、10元、20元、50元和100元硬币可供使用,现在要找87元的零钱。程序输出结果如下:
```
需要找的零钱总额为 87 元
可以使用的硬币有:1元 2元 5元 10元 20元 50元 100元
需要3个20元硬币
需要1个5元硬币
需要2个1元硬币
```
这个例子中的贪心策略是每次都选择面值最大的硬币。当然,这个策略并不一定总能得到最优解,但是在很多情况下都是有效的。
阅读全文