題目:
題解:動態規劃
代碼:動態規劃
/**
* code322
*/
public class code322 {
public static int coinChange(int[] coins, int amount) {
int max = 100000000; // 一億
int dp[] = new int[amount + 1];
for (int i = 0; i < dp.length; i++) {
dp[i] = max;
}
dp[0] = 0;
for (int i = 1; i <= amount; i++) {
for (int j = 0; j < coins.length; j++) {
if (coins[j] <= i) {
dp[i] = Math.min(dp[i], dp[i - coins[j]] + 1);
}
}
}
if (dp[amount] > amount) {
return -1;
} else {
return dp[amount];
}
}
public static void main(String[] args) {
int coins1[] = { 1, 2, 5 };
int amount1 = 11;
int ans1 = coinChange(coins1, amount1);
System.out.println(ans1);
int coins2[] = { 2 };
int amount2 = 3;
int ans2 = coinChange(coins2, amount2);
System.out.println(ans2);
}
}