组合总和 Ⅳ
TIP
给你一个由 不同 整数组成的数组 nums
,和一个目标整数 target
。请你从 nums
中找出并返回总和为 target
的元素组合的个数。
题目数据保证答案符合 32 位整数范围。
思路
动规五部曲
- 确定dp数组以及下标的含义:
dp[i]
:总和 = i
时的组合数。 - 确定递推公式:
dp[j]
=dp[j-nums[i]]+dp[i]
- dp数组如何初始化:
dp[0] = 1
、dp[非0] = 0
- 确定遍历顺序
- 举例推导dp数组
js
var combinationSum4 = function(nums, target) {
if(nums.length===1) return 0
let dp = Array(target + 1).fill(0)
dp[0] = 1
for(let j=0;j<=target;j++){
for(let i=0;i<nums.length;i++){
if(j-nums[i]>=0)
dp[j] += dp[j-nums[i]]
}
}
console.log(dp)
return dp[target]
};