39.组合总分

在这里插入图片描述

数字可以重复选,如 上面的示例二,我们先把以2开头的全部选完,在选以3开头的。
这样保证了结果中没有重复的(如2,3,3和 3,2,3)
参数k来控制选数的时候只能从本身或者下一个数选。

class Solution {
public:
    vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
        vector<vector<int>> ans;
        vector<int>tep;
        dfs(ans,candidates,target,tep,0,0);
        return ans;
    }
    void dfs( vector<vector<int>>& ans,vector<int>& candidates, int target, vector<int>tep,int sum,int k)
    {
        if(target==sum){
            ans.push_back(tep);
            return ;
        }
        if(target<sum) return ;
        for(int i=k;i<candidates.size();i++){
            tep.push_back(candidates[i]);
            dfs(ans,candidates,target,tep,sum+candidates[i],i);
            tep.pop_back();
        }
    }
};

看了题解,也可以是减法。

发布了154 篇原创文章 · 获赞 47 · 访问量 2万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览