【算法刷题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;
    }
};
相关推荐
不懒不懒7 分钟前
【自然语言处理:词嵌入技术与 CBOW 模型详解】
人工智能·机器学习
月落归舟10 分钟前
Lambda + Arrays---小练习
数据结构·算法
2601_9553544612 分钟前
seo臻系统和百度seo有什么区别
算法
YuanDaima204814 分钟前
解决Conda环境下RTX 50系列显卡PyTorch+Transformers+PEFT微调报错
人工智能·pytorch·笔记·python·深度学习·机器学习·conda
君义_noip18 分钟前
信息学奥赛一本通 1487:【例 2】北极通讯网络
算法·图论·信息学奥赛·csp-s
会编程的土豆33 分钟前
【leetcode hot 100】二叉树二叉树
数据结构·算法·leetcode
XiYang-DING36 分钟前
【LeetCode】203. 移除链表元素(Remove Linked List Elements)
算法·leetcode·链表
墨神谕38 分钟前
希尔排序详解
数据结构·算法·排序算法
胡楚昊40 分钟前
Polar PWN (4)
linux·运维·算法
今儿敲了吗40 分钟前
51| 数独
算法·深度优先·图论