1 class Solution 2 { 3 public: 4 vector<vector<int>> combinationSum(vector<int>& candidates, int target) 5 { 6 sort(candidates.begin(),candidates.end()); 7 vector<vector<int>> res; 8 vector<int> cur; 9 help(res,cur,candidates,target,0); 10 return res; 11 } 12 13 void help(vector<vector<int>>&res,vector<int> &cur,vector<int>&candidates,int target,int index) 14 { 15 if(target<0) 16 return; 17 if(target==0) 18 { 19 res.push_back(cur); 20 return; 21 } 22 int sz=candidates.size(); 23 for(int i=index;i<sz;i++) 24 { 25 cur.push_back(candidates[i]); 26 help(res,cur,candidates,target-candidates[i],i); 27 cur.pop_back(); 28 } 29 } 30 };
这个题,回溯法,很重要,那个pop_back()好好理解
浙公网安备 33010602011771号