美文网首页
216. 组合总和 III

216. 组合总和 III

作者: 放下梧菲 | 来源:发表于2020-05-02 10:58 被阅读0次

找出所有相加之和为 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]]

本题是很简单的回溯算法,其实也就是递归,既然是递归那就需要确定递归终止条件,判断递归中需要做什么。
1、递归终止条件就是,当一个组合中有3个数字,那就是递归结束,并且还得判断组合中的数字和是否等于给定的n。
2、在递归过程中就是将一个个数字加入组合,是很简单的。注意是不能重复的,那就是需要一个有序,代码中以升序为例子,每次加入的数字都要比之前的数字大。

代码如下:

class Solution {
private:
    vector<vector<int>> ans;
    bool *visit;
public:
    vector<vector<int>> combinationSum3(int k, int n) {
        visit=new bool [10];
        for(int i=1;i<10;i++) visit[i]=false;
        traceback(vector<int>(),0,1,k,n);
        return ans;
    }
    void traceback(vector<int> tmp,int sum,int start,int k,int n){
        if( k == 0 ){
            if( sum == n )
            ans.push_back(tmp);
            return ;
        }
        for(int i=start;i<=9;i++){
            if(visit[i]==true){
                continue;
            }
            if( sum+i > n ){
                break;
            }
            visit[i]=true;
            tmp.push_back(i);
            traceback(tmp,sum+i,i+1,k-1,n);
            tmp.pop_back();
            visit[i]=false;
        }
    }
};

这个几乎可以成为一个解决回溯的模板,也是我个人总结归纳出来的。可以参照我的另外一篇博客也是回溯算法的解题,两个代码几乎一模一样。几乎也确实可以解决任何的回溯问题,剪枝也只是在这个模板上修改一二即可。

传送门:https://www.jianshu.com/p/8eb949d4859b

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/combination-sum-iii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

相关文章

  • 216. 组合总和 III

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

  • 216. 组合总和 III

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

  • 216. 组合总和 III

    典型的回溯题

  • backtracking——216. 组合总和 III

    这道题里面没有重复的元素,但是给了一个所有组合的个数,所以在判断的时候,我们不仅需要判断target还要判断个数是...

  • 递归与回溯:216.组合总和III

    /** 题目 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不...

  • 216 组合总和 III

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

  • 2019-01-26

    LeetCode 216. Combination Sum III Description Find all po...

  • 递归与排列组合

    216. Combination Sum III(https://leetcode.com/problems/co...

  • 216. Combination Sum III

    216. Combination Sum III Total Accepted: 38518Total Submi...

  • LeetCode216. 组合总和 III

    https://blog.csdn.net/Jaster_wisdom/article/details/81904572

网友评论

      本文标题:216. 组合总和 III

      本文链接:https://www.haomeiwen.com/subject/ayzhghtx.html