找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。
说明:
所有数字都是正整数。
解集不能包含重复的组合。
示例 1:
输入: k = 3, n = 7
输出: [[1,2,4]]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/combination-sum-iii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
public class Solution {
private IList<IList<int>> res = new List<IList<int>>();
private int k;
private int n;
public IList<IList<int>> CombinationSum3(int k, int n) {
this.k = k;
this.n = n;
DFS(1, new List<int>(), 0);
return res;
}
private void DFS(int start, List<int> path, int sum){
if(path.Count == k || sum > n){
//
if(path.Count == k && sum == n){
List<int> temp = new List<int>(path);
res.Add(temp);
}
return;
}
//path小于k
for(int i = start; i <= 9; i++){
path.Add(i);
DFS(i+1, path, sum+i);
path.RemoveAt(path.Count-1);
}
}
}