Leetcode 216. 组合总和 III

时间:2024-12-10 12:37:44

地址 https://leetcode-cn.com/problems/combination-sum-iii/

找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。
说明:

所有数字都是正整数。
解集不能包含重复的组合。 
示例 : 输入: k = , n =
输出: [[,,]]
示例 : 输入: k = , n =
输出: [[,,], [,,], [,,]]

解法 DFS 逐个尝试 本代码没加优化 性能一般

class Solution {
public: vector<vector<int>> ret;
void Dfs(int selectNum, int k, int n, vector<int>& v)
{
if (selectNum > ) return;
if (v.size() == k) {
int sum = ;
for (auto e : v) { sum += e; }
if (sum == n) {
ret.push_back(v);
}
return;
} v.push_back(selectNum);
Dfs(selectNum + , k, n, v);
v.pop_back(); Dfs(selectNum + , k, n, v); } vector<vector<int>> combinationSum3(int k, int n) {
vector<int> v;
Dfs(, k, n, v); return ret;
} };