39. 组合总和

class Solution {
public:
    vector<vector<int>>res;
    vector<int>cur;vector<int>candidates;
    int s=0,t;
    void bt(int start){
        if(s>=t){if(s==t)res.push_back(cur);return;}
        for(int j=start;j<candidates.size();j++){int i=candidates[j];
            cur.push_back(i);s+=i;
            bt(j);
            cur.pop_back();s-=i;
        }
    }
    vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
        t=target;this->candidates=candidates;bt(0);return res;
    }
};