Combination Sum IV

题目来源
给一个数组及一个target,求数组元素和为target的所有数目。
一开始想着直接深搜,后来看看不太行,超时,看了下tags,对啊,傻逼了,可以用DP啊,然后就用了DP,代码如下:

class Solution {
public:
    int combinationSum4(vector& nums, int target) {
        vector dp(target+1, -1);
        dp[0] = 1;
        return dfs(nums, target, dp);
    }
    
    int dfs(vector& nums, int target, vector& dp)
    {
        if (dp[target] != -1)
            return dp[target];
        int len = nums.size();
        int res = 0;
        for (int i=0; i= nums[i])
                res += dfs(nums, target-nums[i], dp);
        dp[target] = res;
        return res;
    }
};

你可能感兴趣的:(Combination Sum IV)