标题:518. 零钱兑换 II
难度:中等
天数:第20天,第2/2题
示例 1:
示例 2:
示例 3:
提示:
1 <= coins.length <= 300
1 <= coins[i] <= 5000
coins
中的所有值 互不相同0 <= amount <= 5000
class Solution {
//动态规划 第20天 2/2
public int change(int amount, int[] coins) {
int m = coins.length;
//记录组合数
int[] dp = new int[amount + 1];
//初始化1
dp[0] = 1;
//数组在外层循环 是因为 122 212 221 只算是一种
for(int i = 0;i < m;i++){
for(int j = coins[i];j <= amount;j++){
//当前方法数 =当前j已记录组合数 + 前一个j-coins[i] 组合数之和
dp[j] = dp[j] + dp[j-coins[i]];
}
}
return dp[amount];
}
}