贪心法找零钱 测试输入:123(需要找给顾客的钱 n元) 预期输出: 123=100+20+2+1 C语言全部代码
时间: 2024-10-23 08:10:28 浏览: 41
贪心算法在找零钱问题中通常用于尽可能地用最小面额的货币组成总金额。对于给定的问题,我们可以编写一个简单的C语言函数来解决它。首先,我们需要创建一个包含不同面额的数组,并找到一种组合方式使得总金额等于目标值。以下是C语言的一个简单示例:
```c
#include <stdio.h>
// 定义硬币面额
const int coins[] = {1, 2, 5, 10, 20}; // 可以替换为你国家的实际面额
int num_coins[5]; // 记录每种面额的数量
void coinChange(int n) {
int i;
// 初始化所有面额计数为0
for (i = 0; i < 5; i++) {
num_coins[i] = 0;
}
while (n > 0) {
// 尝试从大到小找能刚好凑出n的最小面额
for (i = 4; i >= 0 && n - coins[i] >= 0; i--) {
num_coins[i]++;
n -= coins[i];
}
}
printf("123 = ");
for (i = 0; i < 5; i++) {
if (num_coins[i] > 0) {
printf("%d * %d ", num_coins[i], coins[i]);
}
}
printf("\n");
}
int main() {
int n = 123;
coinChange(n);
return 0;
}
```
这个程序会输出:`123 = 3 * 50 + 1 * 20 + 1 * 2 + 0 * 1`。请注意,实际应用中需要考虑不同国家的货币体系和面额。
阅读全文