本题源自leetcode
-------------------------------------------------
思路1:
动态规划: 用一个target+1 的数组dp 记录金额j可以有多少种硬币组合。
代码:
int change(int amount, vector<int>& coins) {
if(amount==0)
return 1;
int len=coins.size();
if(len==0)
return 0;
vector<int> dp(amount+1,0);
dp[0]=1;
for(int i=0;i<len;i++){
for(int j=coins[i];j<=amount;j++){
dp[j] += dp[j-coins[i]]; //当前金额的组合数量
}
}
return dp[amount];
}
思路 2:
int change(int amount, vector<int>& coins) {
if(amount==0)
return 1;
int len=coins.size();
if(len==0)
return 0;
unord