377.组合总和 Ⅳ(java动态规划)(背包问题)
解题思路
背包问题
-
i代表背包容量,j代表可选择的数组范围[0,j]
-
初始化:容量为0时,组合总数为1 所以dp[0] = 1;
-
推导公式:dp[i] += dp[i-nums[j]];
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] >= 0) {
dp[i] += dp[i - nums[j]];
}
}
}
return dp[target];
}
}
如有不对的地方还请指教!