216. 组合总和 III
同组合,终止条件为:
- 元素个数是否等于k
- 元素和是否等于目标数
class Solution {
public:
vector<int> res;
vector<vector<int>> result;
int sum=0;
void backtracking(int k, int n,int startIndex)
{
if (res.size() == k) {
if (sum == n) result.push_back(res);
return; // 如果path.size() == k 但sum != targetSum 直接返回
}
for(int i =startIndex;i<=9;i++)
{
res.push_back(i);
sum+=i;
backtracking(k,n,i+1);
sum-=i;
res.pop_back();
}
}
vector<vector<int>> combinationSum3(int k, int n) {
backtracking(k,n,1);
return result;
}
};
剪枝优化
- 元素个数不能超过k 9-(k-pathsize())+1
- 元素之和不能超过n