1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| class Solution { public: int n; int target; vector<vector<int>> res; vector<vector<int>> combinationSum(vector<int>& candidates, int target) { this->target = target; n = candidates.size(); vector<int> vec; search(0, 0, vec, move(candidates)); return res; } void search(int index, int sum, vector<int> & vec, vector<int>&& candidates) { if(sum == target) { res.push_back(vec); return; } if(sum > target) return; vec.push_back(candidates[index]); search(index, sum+candidates[index], vec, move(candidates)); vec.pop_back(); if(index+1 < n) { search(index+1, sum, vec, move(candidates)); } } };
|