DFS 基本能懂,需练习才能自主做
void combinationSumDFS(vector<vector<int>> &res,vector<int> &out,vector<int>& candidates,int target,int level)
{
if(target<0)
return;
else if(target==0)
{
res.push_back(out);
}
else{
for(int i=level;i<candidates.size();i++)
{
out.push_back(candidates[i]);
combinationSumDFS(res,out,candidates,target-candidates[i],i);
out.pop_back();
}
}
}
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
vector<vector<int>> res;
vector<int> out;
sort(candidates.begin(),candidates.end());
combinationSumDFS(res,out,candidates,target,0);
return res;
}