数组总和leetcode
输入:candidates = [2,3,6,7], target = 7
输出:[[2,2,3],[7]]
class Solution {
public:
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
vector<vector<int>> res;
vector<int> temp;
sort(candidates.begin(),candidates.end());
int num=0;
int begin=0;
dfs(candidates,target,res,temp,num,begin);
return res;
}
void dfs(vector<int>& candidates,int target, vector<vector<int>>& res, vector<int>& temp,int num,int begin)
{
if(num==target)
{
res.push_back(temp);
return ;
}
for(int i=begin;i<candidates.size();++i)
{
int tem=candidates[i]+num;
if(tem<=target){
temp.push_back(candidates[i]);
dfs(candidates,target,res,temp,tem,i);//i改成begin会出现全排列,[223][232][322]
temp.pop_back();
}else{
break;
}
}
}
};