Steward
分享是一種喜悅、更是一種幸福
程式語言 - LeetCode - C++ - 322. Coin Change
題目:

方法:
對每個硬幣c: dp[x] = min(dp[x], dp[x - c] + 1) 如果我用一個硬幣 c 剩下要湊 x - c 所以總數 = dp[x - c] + 1
解答:
class Solution {
public:
int coinChange(vector<int>& coins, int amount) {
vector<int> dp(amount + 1, amount + 1);
dp[0] = 0;
for (int i = 1; i <= amount; ++i) {
for (int c : coins) {
if (i - c >= 0) {
dp[i] = min(dp[i], dp[i - c] + 1);
}
}
}
return dp[amount] > amount ? -1 : dp[amount];
}
};