本题和组合类似,只不过多加了一步求和,并将数组的范围定在了 [ 1, 9 ]。
class Solution {
private:
vector<vector<int>> result;
vector<int> vec;
int sum = 0;
public:
void backtracking(int start, int k, int n){
if(sum > n){
return;
}
if(vec.size() == k){
if(sum == n){
result.push_back(vec);
}
return;
}
for(int i = start; i <= 9 - (k - vec.size()) + 1; i++){
vec.push_back(i);
sum += i;
backtracking(i + 1, k, n);
vec.pop_back();
sum -= i;
}
}
vector<vector<int>> combinationSum3(int k, int n) {
backtracking(1, k, n);
return result;
}
};