Combination Sum
vector<vector<int> > combinationSum(vector<int> &candidates, int target) { // Note: The Solution object is instantiated only once and is reused by each test case. sort(candidates.begin(),candidates.end()); vector<vector<int>> res; vector<int> comb; dfs(0,candidates,target,comb,res); return res; } void dfs(int pos,vector<int>& candidates,int target,vector<int>& comb,vector<vector<int>>& res) { if(target==0)//注意两者顺序 { res.push_back(comb); return; } if(pos==candidates.size()) return; for(int i=pos;i<candidates.size();i++) { if(candidates[i]>target) break; comb.push_back(candidates[i]); dfs(i,candidates,target-candidates[i],comb,res); comb.pop_back(); } }