【算法刷题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;
    }
};
相关推荐
满天星83035775 分钟前
【算法】最长递增子序列(三种解法)
算法
旅僧31 分钟前
Q-learning(自用)
python·机器学习
啦啦啦啦啦zzzz1 小时前
算法:贪心算法
c++·算法·leetcode·贪心算法
清泓y2 小时前
RAG 技术
算法·ai
阿慧今天瘦了嘛2 小时前
计算机组成原理概述:从硬件到软件的桥梁
计算机网络·算法
韩师傅3 小时前
重生之我成为模型 第三篇 · 我从来只给可能性,答案是你们翻译的
深度学习·机器学习·计算机视觉
韩师傅3 小时前
重生之我成为模型 第二篇 · 看似千选一,其实每一分都有原理
深度学习·机器学习·计算机视觉
韩师傅3 小时前
重生之我成为模型 第一篇 · 原图我不吃的哈
深度学习·机器学习·计算机视觉
青春不败 177-3266-05203 小时前
基于Python实现的深度学习技术在水文水质领域应用
python·深度学习·机器学习·水文水资源·水质模型
网站优化(SEO)专家3 小时前
SEO核心算法拆解:网站排名快速提升的武林秘籍!
算法·搜索引擎·网站排名·核心算法