#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int min(int a, int b) {
return a < b ? a : b;
}
int coinCollect(int coins[], int size, int target) {
int dp[target + 1];
dp[0] = 0;
for (int i = 1; i <= target; i++) {
dp[i] = INT_MAX;
for (int j = 0; j < size; j++) {
if (coins[j] <= i && dp[i - coins[j]] != INT_MAX) {
dp[i] = min(dp[i], dp[i - coins[j]] + 1);
}
}
}
return dp[target] == INT_MAX ? -1 : dp[target];
}
int main() {
int coins[] = {1, 5, 10, 25};
int size = sizeof(coins) / sizeof(coins[0]);
int target;
printf("请输入目标金额:");
scanf("%d", &target);
int result = coinCollect(coins, size, target);
if (result == -1) {
printf("无法凑够目标金额\n");
} else {
printf("最少需要%d个硬币\n", result);
}
return 0;
}