简单常规题,回朔
class Solution {
public:
void func(int start,int sum,vector<int>& temp,vector<vector<int>>& result,vector<int>& candidates, int target)
{
if(sum==target)
result.push_back(temp);
else
{
for(int i=start;i<candidates.size();i++)
{
if(candidates[i]+sum<=target)
{
temp.push_back(candidates[i]);
func(i,candidates[i]+sum,temp,result,candidates,target);
temp.pop_back();
}
}
}
return;
}
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
int sum=0;
vector<int> temp;
vector<vector<int>> result;
func(0,sum,temp,result,candidates,target);
return result;
}
};