思路: 初始化为没有面值的硬币组合amount的个数,然后依次添加每个面值,去更新amount的组合个数。
class Solution {
public:
int change(int amount, vector<int>& coins) {
//当没有硬币时,初始化的dp数组
vector<int>dp(amount+1,0);
//amount为0时,有1种组合
dp[0]=1;
//依次添加硬币面值更新amount组合个数
for(int i=0;i<coins.size();i++){
for(int j=coins[i];j<=amount;j++){
dp[j]+=dp[j-coins[i]];
}
}
return dp[amount];
}
};