记录第一次学会回溯算法,暴力,没有进行优化
#include <vector>
#include <algorithm>
using namespace std;
class Solution
{
public:
void back(vector<int> &candidates, vector<vector<int>> &ans, int &target,int i,int now,vector<int>temp)
{
if(i>=candidates.size())
return ;
now+=candidates[i];
if(now>target)
{
return ;
}
else if(now==target)
{
temp.push_back(candidates[i]);
ans.push_back(temp);
return ;
}
else
{
temp.push_back(candidates[i]);
for(int j=i;j<candidates.size();++j)
back(candidates,ans,target,j,now,temp);
}
return ;
}
vector<vector<int>> combinationSum(vector<int> &candidates, int target)
{
sort(candidates.begin(), candidates.end());
vector<vector<int>> ans;
for (int i = 0; i < candidates.size(); ++i)
{
int now = 0;
vector<int >temp;
back(candidates,ans,target,i,now,temp);
}
return ans;
}
};