一、题目
二、代码
class Solution
{
public:
vector<vector<int>> return_vector;
vector<int> path;
void track_back(int start_point, int max_length,vector<int>& candidates, int target )
{
int i,j;
int sum=0;
for(i=0;i<path.size();i++) sum+=path[i];
if(sum>target) return;
else if(sum==target)
{
return_vector.push_back(path);
return ;
}
else if(sum<target)
{
for(i=start_point;i< max_length ;i++)
{
path.push_back(candidates[i]);
//不往前选
track_back(i,candidates.size(),candidates,target);
path.pop_back();
}
}
}
vector<vector<int>> combinationSum(vector<int>& candidates, int target)
{
return_vector.clear();
path.clear();
track_back(0,candidates.size(),candidates,target);
return return_vector;
}
};