https://leetcode.com/problems/combination-sum-iii/description/
注释的是写残的代码 不知道为啥会有2 2 3 这种有重复的解。。。
class Solution {
public:
void dfs(int k, int n, int st, int cur_sum, vector<int> tmp, vector< vector<int> >&ans) {
if (st > n || cur_sum > n || tmp.size() > k || st > 10) return;
if (cur_sum == n && tmp.size() == k) {
ans.push_back(tmp);
return;
}
dfs(k, n, st+1, cur_sum, tmp, ans);
tmp.push_back(st);
dfs(k, n, st+1, cur_sum + st, tmp, ans);
// for (int i = st; i <= min(n, 9); i++) {
// if (cur_sum + i <= n) {
// // if (tmp.size() && i <= tmp.back() ) {
// // // for (int j = 0; j < tmp.size(); j++) {
// // // cout << tmp[j] << endl;
// // // }
// // continue;
// // }
// tmp.push_back( i );
// dfs(k, n, st+1, cur_sum + i, tmp, ans);
// tmp.pop_back();
// }
// // dfs(k, n, st+1, cur_sum, tmp, ans);
// }
}
vector<vector<int>> combinationSum3(int k, int n) {
vector< vector<int> > ret;
dfs(k, n, 1, 0, vector<int>(), ret);
return ret;
}
};