class Solution {
public:
void dfs(int current, int sum, vector<int> &cans, vector<vector<int> >&ans, int k) {
if (sum == 0 && cans.size() == k) {
ans.push_back(cans);
return ;
}
if (current > sum || current > 9 || cans.size() > k) {
return ;
}
dfs(current + 1, sum, cans, ans, k);
cans.push_back(current);
dfs(current + 1, sum - current, cans, ans, k);
cans.pop_back();
}
vector<vector<int>> combinationSum3(int k, int n) {
vector<vector<int> > ans;
vector<int> cans;
dfs(1, n, cans, ans, k);
return ans;
}
};