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]]
不行啊,这题目太水了,不过还有可以剪枝的地方
class Solution { public: vector<vector<int>> combinationSum3(int k, int n) { vector<vector<int> > res; vector<int> path; dfs(res, path, k, n); return res; } void dfs(vector<vector<int> >& result, vector<int>& path, int k, int target) { if (k == 0 && target == 0) { result.push_back(path); return; } if (k == 0 || target < 0) { return; } for (int i=1; i<=9; i++) { if (!path.empty() && path.back() >= i) { continue; } path.push_back(i); dfs(result, path, k - 1, target - i); path.pop_back(); } } };