首页 > 其他 > 详细

Leetcode 216. 组合总和 III

时间:2019-11-24 21:22:15      阅读:70      评论:0      收藏:0      [点我收藏+]

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

 

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

 


说明:

所有数字都是正整数。
解集不能包含重复的组合。 
示例 1:

输入: k = 3, n = 7
输出: [[1,2,4]]
示例 2:

输入: k = 3, n = 9
输出: [[1,2,6], [1,3,5], [2,3,4]]

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

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

    
        v.push_back(selectNum);
        Dfs(selectNum + 1, k, n, v);
        v.pop_back();

        Dfs(selectNum + 1, k, n, v);
    
}

vector<vector<int>> combinationSum3(int k, int n) {
    vector<int> v;
    Dfs(1, k, n, v);

    return ret;
}

};

 

Leetcode 216. 组合总和 III

原文:https://www.cnblogs.com/itdef/p/11924130.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!