题目链接: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]]
思路:一个基本的DFS的题目。一个数可以拿,可以不拿,因此用DFS,将符合条件的答案都加入到结果中去。
代码如下:
class Solution {
public:
void DFS(int k, int n, vector<int> vec, int cur)
{
if(k==0 && n == 0) result.push_back(vec);
if(k <= 0 || n<= 0 || cur > 9) return;
DFS(k, n, vec, cur+1);
vec.push_back(cur);
DFS(k-1, n-cur, vec, cur+1);
}
vector<vector<int>> combinationSum3(int k, int n) {
vector<int> vec;
DFS(k, n, vec, 1);
return result;
}
private:
vector<vector<int>> result;
};