/*
* @lc app=leetcode id=216 lang=cpp
*
* [216] Combination Sum III
*/
class Solution {
public:
void dfs(const int k, int n, const int cur, const int num, vector<int> &path, vector<vector<int>> &res) {
if (cur == k) {
if (n == 0) res.push_back(path);
return;
}
for (int i = num + 1; i <= 9; ++i) {
path.push_back(i);
dfs(k, n - i, cur + 1, i, path, res);
path.pop_back();
}
}
vector<vector<int>> combinationSum3(int k, int n) {
vector<int> path;
vector<vector<int>> res;
dfs(k, n, 0, 0, path, res);
return res;
}
};