Combination Sum IV

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

class Solution {
public:
    int combinationSum4(vector<int>& nums, int target) {
        vector<int> dp(target+1, -1);
        dp[0] = 1;
        return dfs(nums, target, dp);
    }
    
    int dfs(vector<int>& nums, int target, vector<int>& dp)
    {
        if (dp[target] != -1)
            return dp[target];
        int len = nums.size();
        int res = 0;
        for (int i=0; i<len; i++)
            if (target >= nums[i])
                res += dfs(nums, target-nums[i], dp);
        dp[target] = res;
        return res;
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容