C++ | Leetcode C++题解之第216题组合总和III

题目:

题解:

cpp 复制代码
class Solution {
private:
    vector<vector<int>> res;
    void backtracking(int k, int n, vector<int> ans){
        if(k == 0 || n <= 0){
            if(k == 0 && n == 0){
                res.emplace_back(ans);
            }
            return;
        }
        int start = (ans.size() == 0 ? 0 : ans.back()) + 1;
        for(int i = start; i < 10; i++){
            if(n - i < 0)break;  // 加上元素i已经超过n,更大的i也就无须枚举了
            ans.emplace_back(i);
            backtracking(k - 1, n - i, ans);
            ans.pop_back();
        }
    }
public:
    vector<vector<int>> combinationSum3(int k, int n) {
        if(n < (k + 1) * k / 2 || n > (19- k) * k / 2)return res;
        vector<int> ans;
        backtracking(k, n, ans);
        return res;
    }
};
相关推荐
Mr.Wang80918 分钟前
条款23:宁以non-member、non-friend替换member函数
开发语言·c++
以卿a1 小时前
C++ 模板初阶
开发语言·c++
黑不溜秋的7 小时前
C++ 设计模式 - 策略模式
c++·设计模式·策略模式
Dream it possible!9 小时前
LeetCode 热题 100_在排序数组中查找元素的第一个和最后一个位置(65_34_中等_C++)(二分查找)(一次二分查找+挨个搜索;两次二分查找)
c++·算法·leetcode
夏末秋也凉9 小时前
力扣-回溯-46 全排列
数据结构·算法·leetcode
南宫生9 小时前
力扣每日一题【算法学习day.132】
java·学习·算法·leetcode
柠石榴9 小时前
【练习】【回溯No.1】力扣 77. 组合
c++·算法·leetcode·回溯
Leuanghing9 小时前
【Leetcode】11. 盛最多水的容器
python·算法·leetcode
qy发大财9 小时前
加油站(力扣134)
算法·leetcode·职场和发展
王老师青少年编程9 小时前
【GESP C++八级考试考点详细解读】
数据结构·c++·算法·gesp·csp·信奥赛