原题链接https://leetcode.com/problems/combination-sum-iii/
Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be a unique set of numbers.
Ensure that numbers within the set are sorted in ascending order.
Example 1:
Input: k = 3, n = 7
Output:
[[1,2,4]]
Example 2:
Input: k = 3, n = 9
Output:
[[1,2,6], [1,3,5], [2,3,4]]
<span style="font-size:14px;">class Solution {
public:
vector<int>tmp;
vector<vector<int> >ans;
int k;
vector<vector<int> > combinationSum3(int k, int n) {
tmp.resize(k);
this->k = k;
dfs(1, n, 1);
return ans;
}
void dfs(int s, int n, int deep)
{
if (deep == k)
{
if (n > tmp[k - 2] && n <= 9)
{
tmp[k-1] = n;
ans.push_back(tmp);
}
return;
}
for (int i = s; i <= 9; ++i)
{
if ((n - i) / (k - deep) >= i + 1 && (n - i) / (k - deep) <= 9)
{
tmp[deep - 1] = i;
dfs(i + 1, n - i, deep + 1);
}
}
}
};</span>