377. 组合总和 Ⅳ
给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数。
示例:
nums = [1, 2, 3] target = 4
所有可能的组合为: (1, 1, 1, 1) (1, 1, 2) (1, 2, 1) (1, 3) (2, 1, 1) (2, 2) (3, 1)
请注意,顺序不同的序列被视作不同的组合。
因此输出为 7。
/**
1、由于需要考虑选取元素的顺序,因此这道题需要计算的是选取元素的排列数
2、dp[x] 表示选取的元素之和等于 x的方案数,目标求dp[target]
3、dp[0]=1,什么都不选也是一种方案
4、dp[i] nums 遍历 :选num dp[i-num] (num<=i),不选num dp[i]
*/
public int combinationSum4(int[] nums, int target) {
int[] dp=new int[target+1];
dp[0]=1;
for(int i=1;i<=target;i++){
for(int num:nums){
if(num<=i){
dp[i]+=dp[i-num];
}
}
}
return dp[target];
}

浙公网安备 33010602011771号