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()好好理解

posted on 2018-07-10 12:42  高数考了59  阅读(94)  评论(0)    收藏  举报