题目:
找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。
说明:
- 所有数字都是正整数。
- 解集不能包含重复的组合。
例:
输入: k = 3, n = 7
输出: [[1,2,4]]
来源:
解题思路:回溯
继续学习回溯的思想,本题与 上一篇(所有组合) 非常相似,直接借鉴。
- 递归终止条件:满足k个数
- 结果输出条件:满足k个数 && 满足sum
- 剪枝条件:当前虽然不足k个数,但其和即将超过目标值
c++代码:
class Solution {
public:
vector< vector<int> > result;
vector<int> path;
vector< vector<int> > combinationSum3(int k, int n) {
back(n, 0, k, 1);
return result;
}
// targetSum:目标和,固