class Solution {
public int change(int amount, int[] coins) {
int[] dp = new int[amount + 1];
dp[0] = 1;
for(int i = 1; i < coins.length + 1;i++){
int coin = coins[i - 1];
for(int j = coin; j <= amount; j++){
dp[j] += dp[j - coin];
}
}
return dp[amount];
}
}
和01背包类似,这里无非就是物品可以重复选取,所以是从小到大求组合