2023.7.18
做了这道题 组合 之后,本题就很容易了,依旧是使用回溯。 其中需要统计一下总和sum值,以此来判断能否加入到最终数组中。下面上代码:
class Solution {
public:
vector<vector<int>> ans;
vector<int> path;
void backtrating(int k, int n, int start, int sum)
{
if(path.size() == k)
{
if(sum == n)
{
ans.push_back(path);
}
return;
}
//for(int i=start; i<=9; i++)
//剪枝
for(int i=start; i<=10-k+path.size(); i++)
{
path.push_back(i);
sum += i;
backtrating(k,n,i+1,sum);
sum -= i;
path.pop_back();
}
}
vector<vector<int>> combinationSum3(int k, int n) {
backtrating(k,n,1,0);
return ans;
}
};