天天看点

Combination Sum(C++组合总和)

解题思路:

(1)回溯,下一个仍为i

class Solution {
public:
    vector<vector<int>> vec;
    
    void helper(vector<int> v,vector<int>& c,int target,int l) {
        if(target==0) {
            vec.push_back(v);
            return;
        } else if(target<0) return;
        
        for(int i=l;i<c.size();i++) {
            v.push_back(c[i]);
            helper(v,c,target-c[i],i);
            v.pop_back();
        }
        return;
    }
    
    vector<vector<int>> combinationSum(vector<int>& c, int target) {
        vector<int> v;
        helper(v,c,target,0);
        return vec;
    }
};