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]; }