【算法刷题day24】回溯算法+简单剪枝

77.组合

文档链接:[代码随想录]

题目链接:77.组合

题目:

给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。

你可以按 任何顺序 返回答案。

cpp 复制代码
class Solution {
private:
    vector<int> path;
    vector<vector<int>> result;
    void backtracking(int n, int k, int index){
        if(path.size() == k){
            result.push_back(path);
            return ;
        }
        for(int i = index; i <= n; i++){
            path.push_back(i);
            backtracking(n , k, i + 1);
            path.pop_back();
        }
    }
public:
    vector<vector<int>> combine(int n, int k) {
        backtracking(n, k, 1);
        return result;
    }
};

剪枝

cpp 复制代码
class Solution {
private:
    vector<vector<int>> result;
    vector<int> path;
    void backtracking(int n, int k, int startIndex) {
        if (path.size() == k) {
            result.push_back(path);
            return;
        }
        for (int i = startIndex; i <= n - (k - path.size()) + 1; i++) { // 优化的地方
            path.push_back(i); // 处理节点
            backtracking(n, k, i + 1);
            path.pop_back(); // 回溯,撤销处理的节点
        }
    }
public:

    vector<vector<int>> combine(int n, int k) {
        backtracking(n, k, 1);
        return result;
    }
};
相关推荐
xx_xxxxx_11 小时前
多模态动态融合模型Predictive Dynamic Fusion论文阅读与代码分析3-部分数学理论基础
论文阅读·机器学习·transformer·多模态
专业发呆业余科研11 小时前
深度反思不变学习:当 EIIL 失效时,如何通过“偏见诱导”重建环境标签?
人工智能·python·深度学习·神经网络·机器学习
董董灿是个攻城狮11 小时前
大模型连载8:词向量如何表示近义词?
人工智能·python·算法·机器学习
阿钱真强道11 小时前
08 Python 数据分析:学生画像匹配与相似度计算
python·机器学习·数据分析·pandas·推荐系统·相似度计算·文本分析
Jasmine_llq11 小时前
《B4001 [GESP202406 一级] 立方数》
算法·单输入处理·整数算术运算·立方数枚举验证算法(核心逻辑)·循环终止优化算法·状态标记算法·三元运算符输出
芸忻11 小时前
day 13 第六章 二叉树 part01代码随想录算法训练营71期
数据结构·算法
2401_9001515411 小时前
C++中的桥接模式
开发语言·c++·算法
糖果店的幽灵11 小时前
【大模型】大模型学习总结之机器学习 - 1.基础知识
人工智能·学习·机器学习
小O的算法实验室11 小时前
2026年IEEE TNSE SCI2区,基于预测的双阶段分布式任务分配方法+搜救场景中最大化任务分配,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
月流霜11 小时前
Midjourney 零基础控图七大参数
人工智能·算法·midjourney