【算法刷题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;
    }
};
相关推荐
说文科技18 分钟前
【LeetCode】289.生命游戏
算法·leetcode
zyq~22 分钟前
【自学笔记】支持向量机(2)——核函数
笔记·算法·支持向量机·核函数
陪学30 分钟前
自动驾驶,被逼着上市?
大数据·人工智能·物联网·机器学习·自动驾驶·产品运营·产品经理
电气_空空31 分钟前
基于安全风险预测的自动驾驶自适应巡航控制优化
人工智能·机器学习·自动驾驶
luluvx42 分钟前
LeetCode[中等] 155. 最小栈
算法·leetcode·职场和发展
三月七(爱看动漫的程序员)1 小时前
Exploring Large Language Models for Knowledge Graph Completion
人工智能·深度学习·算法·语言模型·chatgpt·langchain·知识图谱
yxzgjx1 小时前
饲料颗粒机全套设备有哪些机器组成
机器学习
莫叫石榴姐1 小时前
一份热乎的阿里25届数据分析面试题
数据库·数据仓库·sql·算法·数据挖掘·数据分析
&白帝&1 小时前
冒泡排序,选择排序,插入排序,归并排序,快速排序五种排序方法
数据结构·算法·排序算法
CXDNW2 小时前
【算法篇】栈与队列类(笔记)
c++·笔记·算法·leetcode··队列