https://leetcode.com/problems/coin-change/description/
比较常规的一道dp了
唯一需要注意的就是 没办法得到解的判断,最初我写的
return dp[amount] >= INT_MAX-amount ? -1:dp[amount];
class Solution {
public:
int coinChange(vector<int>& coins, int amount) {
if (amount == 0) return 0;
vector<int> dp(amount+2, INT_MAX-amount);
dp[0] = 0;
// dp[coins[0]] = 1;
for (int i = 1; i <= amount; i++) {
for (int j = 0; j < coins.size(); j++) {
if (i >= coins[j]) {
dp[i] = min(dp[i], 1 + dp[i-coins[j]]);
}
}
}
// return dp[amount] >= INT_MAX-amount ? -1:dp[amount];
return dp[amount] > amount ? -1:dp[amount];
}
};