【回溯】216. 组合总和 III
题目
216. 组合总和 III
思路
不知道for有几层时,使用回溯,比上一题多了一个条件,组合需要和为n。
代码
class Solution {
private:
vector<vector<int>>result;
vector<int>path;
void backtracking(int target,int k,int sum,int startindex)
{
if(sum>target)
{
return;
}
if(path.size()==k)
{
if(sum==target)
{
result.push_back(path);
}
return;
}
for(int i=startindex;i<=9-(k-path.size())+1;i++)
{
sum=sum+i;
path.push_back(i);
backtracking(target,k,sum,i+1);
sum=sum-i;
path.pop_back();
}
}
public:
vector<vector<int>> combinationSum3(int k, int n) {
backtracking(n,k,0,1);
return result;
}
};