首页 > 其他 > 详细

leetcode39 组合总和

时间:2019-12-18 16:49:28      阅读:65      评论:0      收藏:0      [点我收藏+]

技术分享图片

这道题想到的就是dfs,在累加的和大于或等于target时到达递归树的终点。
代码如下:

class Solution {
public:
    vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
        int r=candidates.size()-1;
        vector<vector<int>> res;
        for(int i=r;i>=0;i--){
            vector<int> tmp;
            int sum=0;
            dfs(candidates, tmp, res, target, i, sum);
        }
        
        return res;
    }
    void dfs(vector<int>& candidates, vector<int>& tmp, vector<vector<int>>& res, int target,int id,int& sum){
        sum+=candidates[id];
        tmp.push_back(candidates[id]);
        if(sum>=target){            
            if(sum==target) res.push_back(tmp);
            sum-=candidates[id];
            tmp.pop_back();
            return;
        }
        for(int i=id;i>=0;i--){
            dfs(candidates,tmp,res,target,i,sum);
        }
        tmp.pop_back();
        sum-=candidates[id];
    }
};

leetcode39 组合总和

原文:https://www.cnblogs.com/joelwang/p/12060605.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!