完全背包
物品可以重复
for (int i = 0; i < weight.size; i++){
for (int j = weight[i]; j <= bagWeight; j++)
● 518. 零钱兑换 II Coin Change II - LeetCode
dp[j] += dp[j - coins[i]]
dp[0] = 1;
for (int i = 0; i < coins.length; i++)
for (int j = coins[i]; j <= amount; j++)
求组合
class Solution {
public int change(int amount, int[] coins) {
int[] dp = new int[amount + 1];
dp[0] = 1;
for (int i = 0; i < coins.length; i++) {
for (int j = coins[i]; j <= amount; j++) {
dp[j] += dp[j - coins[i]];
}
}
return dp[amount];
}
}
● 377. 组合总和 Ⅳ Combination Sum IV - LeetCode
求排列
class Solution {
public int combinationSum4(int[] nums, int target) {
int[] dp = new int[target + 1];
dp[0] = 1;
for (int i = 0; i <= target; i++) {
for (int j = 0; j < nums.length; j++) {
if (i >= nums[j]) {
dp[i] += dp[i - nums[j]];
}
}
}
return dp[target];
}
}