首页 > 编程语言 >【力扣】求组合(回溯算法)

【力扣】求组合(回溯算法)

时间:2024-03-06 23:44:58浏览次数:17  
标签:return int res startindex 力扣 算法 回溯 backtrace path

题目描述

image
2.
image
以下是回溯算法的模版

class Solution {
private:
    vector<vector<int>> res;
    vector<int> path;//这个变量名还是设为path更合适
    void backtrace(int n, int k, int startindex){
        //递归结束条件,这个是根据问题要求修改的
        if(path.size() == k){
            //找到了一个合适的组合
            res.push_back(path);
            return ;
        }

        //回溯过程
        for(int i = startindex; i <= n - (k - path.size()) + 1; i++){
            path.push_back(i);
            //向下递归的操作可以看作一个子问题
            backtrace(n,k,i+1);
            path.pop_back();
        }
    }
public:
        vector<vector<int>> combine(int n, int k) {
        res.clear();
        path.clear();
        backtrace(n,k,1);
        return res;
    }
};
class Solution {
public:
    vector<vector<int>> res;
    vector<int> path;
    void backtrace(int n, int k, int startindex){
        if(path.size() == k && accumulate(path.begin(), path.end(), 0) == n){
            res.push_back(path);
            return ;
        }

        for(int i = startindex; i <= 9; i++){
            path.push_back(i);
            backtrace(n,k,i+1);
            path.pop_back();
        }
    }
    vector<vector<int>> combinationSum3(int k, int n) {
        res.clear();
        path.clear();
        backtrace(n, k, 1);
        return res;
    }
};

标签:return,int,res,startindex,力扣,算法,回溯,backtrace,path
From: https://www.cnblogs.com/satsuki26681534/p/18057915

相关文章

  • 负载均衡的常用算法
    1、轮询法将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。2、随机法通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问。由概率统计理论可以得知,随着客户端调用服务端的次数......
  • 力扣T26与T27的区别
    T27给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。T26你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一......
  • JavaScript逆向之RSA算法
    RSA算法简介RSA算法属于非对称加密,加密的密钥称为公钥,解密的密钥称为私钥,公钥和私钥不是同一个。公钥是可以放在外面的,给谁都可以;但是私钥不可以放在外面,只能服务器自己保留,如果私钥泄露了,数据安全将有极大的风险。RSA的公钥和私钥是成对的,不能拆开。python中的RSA在python中......
  • 最短路径问题的Dijastra算法
    求节点间最短路径的Dijastra算法思路概述给定一个权值非负的有向连通图,求某个特定原点(假定节点编号为0)到终点的最短路径权值之和。Dijastra算法采用贪心思想,每次选取最短距离可到达的点确定对应路径权值之和,并用以更新其它邻接点的可到达最短距离直至确定终点或者所有节......
  • TCP 中的 Delay ACK 和 Nagle 算法
    哈喽大家好,我是咸鱼。今天分享一篇大佬的文章,作者:卡瓦邦噶!文章链接:https://www.kawabangga.com/posts/5845教科书介绍的TCP内容通常比较基础:包括三次握手,四次挥手,数据发送通过收到ACK来保证可靠传输等等。当时我以为已经学会了TCP,但是后来在工作中,随着接触TCP越来越多,我......
  • vslam算法
    vslam算法VSLAM(VisualSimultaneousLocalizationandMapping)算法是一种用于机器人自主导航的技术,它允许机器人通过视觉传感器获取环境信息,以估计自己的位姿和周围环境的的三维重建。VSLAM算法可以分为以下几类:1特征法。这种方法通过提取图像中......
  • slam算法
    slam算法SLAM(SimultaneousLocalizationandMapping,同时定位与地图构建)算法是一种集成了传感器测量和计算机视觉技术的自主导航技术,它允许机器人或无人机在未知环境中实时构建地图,并估计自己的位置和方向。SLAM算法可以分为基于视觉的SLAM和基于激光雷达或......
  • 代码随想录算法训练营day14 | leetcode 144. 二叉树的前序遍历、145. 二叉树的后序遍
    目录题目链接:144.二叉树的前序遍历-简单题目链接:145.二叉树的后序遍历-简单题目链接:94.二叉树的中序遍历-简单递归三要素:确定递归函数的参数和返回值:确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数,并且还要明确每次递归的返回值是什么进而确定递归......
  • 代码随想录算法训练营第三十八天| ● 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯
    理论基础 代码随想录(programmercarl.com)动态规划的五部曲:确定dp数组(dptable)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组斐波那契数 题目链接:509.斐波那契数-力扣(LeetCode)思路:还好。classSolution{public:intfib(intn)......
  • 【力扣】括号匹配(栈的应用)
    题目描述顾名思义代码如下:#include<iostream>#include<string>#include<stack>usingnamespacestd;boolisValid(strings){ if(s.empty()){ returntrue; } if(s.size()%2!=0){ returnfalse; } inti=0; stack<char>st; while(i<......