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();
}
}