題目地址:* https://leetcode-cn.com/problems/coin-change-2/
題目描述:
給定不同面額的硬幣和一個總金額。寫出函數(shù)來計算可以湊成總金額的硬幣組合數(shù)。假設(shè)每一種面額的硬幣有無限個。
示例 1:
輸入: amount = 5, coins = [1, 2, 5] 輸出: 4 解釋: 有四種方式可以湊成總金額: 5=5 5=2+2+1 5=2+1+1+1 5=1+1+1+1+1
示例 2: 輸入: amount = 3, coins = [2] 輸出: 0 解釋: 只用面額2的硬幣不能湊成總金額3。
示例 3: 輸入: amount = 10, coins = [10] 輸出: 1
注意,你可以假設(shè):
0 <= amount (總金額) <= 5000
1 <= coin (硬幣面額) <= 5000
硬幣種類不超過 500 種
結(jié)果符合 32 位符號整數(shù)
參考代碼:
class Solution {
public:
int change(int amount, vector<int>& coins) {
vector<int> dp = vector<int>(amount+1,0);
dp[0] = 1;
for (int i = 0; i< coins.size(); i++) { // 物品
for (int j = coins[i]; j<=amount; j++) {
dp[j] = dp[j] + dp[j-coins[i]];
}
}
return dp[amount];
}
};