leetcode 216组合总和III

简介: leetcode 216组合总和III

组合总和III

833b7a43ea5c4c54880ef74c90cdfeeb.png

回溯法无减枝

class Solution {
public:
    vector<vector<int>> result;
    vector<int> path;
    void backtraking(int k, int n , int sum ,int startidx)
    {
        if(path.size() == k && sum == n)
        {
            result.push_back(path);
            return;
        }else
        {
            for(int i= startidx ; i < 10 ; i++)
            {
                path.push_back(i);
                backtraking(k,n,sum+i,i+1);
                path.pop_back();
            }
            return;
        }
    }
    vector<vector<int>> combinationSum3(int k, int n) {
        backtraking(k,n,0,1);
        return result;
    }
};

回溯剪枝

剪枝原理同 77题

class Solution {
public:
    vector<vector<int>> result;
    vector<int> path;
    void backtraking(int k, int n , int sum ,int startidx)
    {
        if(sum > n) return;
        if(path.size() == k && sum == n)
        {
            result.push_back(path);
            return;
        }else
        {
            for(int i= startidx ; i < 10 - (k - path.size()) + 1 ; i++)
            {
                path.push_back(i);
                backtraking(k,n,sum+i,i+1);
                path.pop_back();
            }
            return;
        }
    }
    vector<vector<int>> combinationSum3(int k, int n) {
        backtraking(k,n,0,1);
        return result;
    }
};

二刷

class Solution {
public:
    vector<vector<int>> result;
    vector<int> pathNum;
    void dfs(int k , int n , int sum ,int fir)
    {
        if(pathNum.size() == k && sum == n)
        {
            result.push_back(pathNum);
            return;
        }
        for(int i = fir ; i<=9 ; i++)
        {
            pathNum.push_back(i);
            dfs(k,n,sum+i,i+1);
            pathNum.pop_back();
        }
    }
    vector<vector<int>> combinationSum3(int k, int n) {
        dfs(k,n,0,1);
        return result;
    }
};
相关文章
|
2月前
|
存储 算法
算法题解-组合总和3
算法题解-组合总和3
|
2月前
|
Java
leetcode-216:组合总和 III
leetcode-216:组合总和 III
23 0
|
2月前
|
Java
leetcode-377:组合总和 Ⅳ
leetcode-377:组合总和 Ⅳ
22 0
|
2月前
|
Java 索引
leetcode-39:组合总和
leetcode-39:组合总和
23 0
|
2月前
|
Java
leetcode-40:组合总和 II
leetcode-40:组合总和 II
25 0
|
9月前
代码随想录Day22 LeetCode T39 组合总和 T40 组合总和II T131 分割回文串
代码随想录Day22 LeetCode T39 组合总和 T40 组合总和II T131 分割回文串
24 0
|
机器学习/深度学习 算法 安全
LeetCode - #40 组合总和 II
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
leetcode:39.组合总和
给定一个无重复元素的数组 candidates和一个目标数 target,找出 candidates中所有可以使数字和为 target的组合。
49 0
leetcode:40.组合总和 II
给定一个数组 candidates和一个目标数 target,找出 candidates中所有可以使数字和为 target的组合。
38 0