#include <stdio.h>
#include <stdlib.h>
struct Coin {
int value;
int count;
};
int compare(const void *a, const void *b) {
return ((struct Coin *)b)->value - ((struct Coin *)a)->value;
}
void makeChange(struct Coin *coins, int num_coins, int amount) {
qsort(coins, num_coins, sizeof(struct Coin), compare);
for (int i = 0; i < num_coins; i++) {
if (amount >= coins[i].value) {
int num_used = amount / coins[i].value;
coins[i].count = num_used;
amount -= num_used * coins[i].value;
}
}
printf("找零方案:\n");
for (int i = 0; i < num_coins; i++) {
if (coins[i].count > 0) {
printf("%d元硬币:%d枚\n", coins[i].value, coins[i].count);
}
}
}
int main() {
struct Coin coins[] = {
{25, 0},
{10, 0},
{5, 0},
{1, 0}
};
int num_coins = sizeof(coins) / sizeof(coins[0]);
int amount = 63;
printf("找零问题解决方案:\n");
makeChange(coins, num_coins, amount);
return 0;
}