class Solution {
public int combinationSum4(int[] nums, int target) {
int[] dp = new int[target + 1];
dp[0] = 1;
for(int j = 0; j <= target;j++){
for(int i = 0;i < nums.length;i++){
if(j - nums[i] >= 0) dp[j] += dp[j - nums[i]];
}
}
return dp[target];
}
}
求排列就是先遍历容量内层遍历物品,求组合是先遍历物品,再内层遍历容量。
本文介绍了一种使用动态规划方法求解0-1背包问题的实现,通过组合总和IV实例讲解如何先遍历物品再遍历目标值,计算所有可能的子集和达到目标值的情况。重点在于理解dp数组的填充过程和最终返回目标状态的解决方案。
990

被折叠的 条评论
为什么被折叠?



