class Solution {
private:
vector<vector<int>> res;
vector<int> path;
int cur_k = 0;
int cur_tar = 0;
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param k int整型
* @param n int整型
* @return int整型vector<vector<>>
*/
vector<vector<int> > combination(int k, int n) {
// write code here
if(n > 45){
return {};
}
vector<int> nums = {1,2,3,4,5,6,7,8,9};
dfs(nums, n, k, 0);
return res;
}
void dfs(vector<int>& nums, int n, int k, int cur_i){
if(cur_tar > n || cur_k > k){
return;
}
if(cur_tar == n && cur_k == k){
res.push_back(path);
return;
}
for(int i=cur_i; i<nums.size(); i++){
path.push_back(nums[i]);
cur_k += 1;
cur_tar += nums[i];
dfs(nums, n, k, i+1);
path.pop_back();
cur_k -= 1;
cur_tar -= nums[i];
}
}
};