#include <stdio.h>
#include <limits.h>
#define MAX_AMOUNT 1000
#define MAX_COINS 100
int min(int a, int b) {
return a < b ? a : b;
}
int coin_collect(int coins[], int n, int amount) {
int dp[MAX_AMOUNT+1];
int i, j;
for (i = 0; i <= amount; i++) {
dp[i] = INT_MAX;
}
dp[0] = 0;
for (i = 1; i <= amount; i++) {
for (j = 0; j < n; j++) {
if (coins[j] <= i) {
dp[i] = min(dp[i], dp[i-coins[j]] + 1);
}
}
}
return dp[amount] == INT_MAX ? -1 : dp[amount];
}
int main() {
int coins[MAX_COINS] = {1, 2, 5};
int n = 3;
int amount = 11;
int min_coins;
min_coins = coin_collect(coins, n, amount);
printf("凑出金额%d所需的最少硬币个数为%d\n", amount, min_coins);
return 0;
}