Skip to content
On this page

组合总和 Ⅳ

TIP

给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。

题目数据保证答案符合 32 位整数范围。

思路

动规五部曲

  1. 确定dp数组以及下标的含义:dp[i]总和 = i时的组合数。
  2. 确定递推公式:dp[j] = dp[j-nums[i]]+dp[i]
  3. dp数组如何初始化:dp[0] = 1 dp[非0] = 0
  4. 确定遍历顺序
  5. 举例推导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]
};