回溯题目的套路总结

news2024/11/15 7:51:00
前言    

昨天写完了LeeCode的7,8道回溯算法的题目,写一下总结,这类题目的共同特点就是暴力搜索问题,排列组合或者递归,枚举出所有可能的答案,思路很简单,实现起来的套路也很通用,一回溯问题为例,常用的是构建一颗搜索树,bfs,dfs

模板

函数名(递归参数)

if(这里是终止条件)

{

一般达到终止条件就需要把答案放入
}

for()

{

push,压入元素,

函数名(递归参数)//这里是往下一层进行递归

pop递归失败,弹出压入的元素
}

这里是写了一个大致的模板,实际的题目还要对照画出一颗树形图更合适,并且方便理解

例题

这里参考力扣的括号生成,画出搜索树

这道题的思路就是暴力搜索,我们遍历所有可能的括号搜索情况,问题的关键就是构建回溯函数

回溯函数构建的正确,才能得到正确的分支

例题1的参考代码
class Solution {
public:
    vector<string>res;
    vector<string> generateParenthesis(int n) {
        string s;
        dfs(n, 0, 0, s);
        return res;
    }
    void dfs(int n, int l, int r, string s)
    {
        if (l == n && r == n)res.push_back(s);
        else {
            if (l < n)dfs(n, l + 1, r, s + "(");
            if (r<n && l>r)dfs(n, l, r + 1, s + ")");
        }
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1943430.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

poi库简单使用(java如何实现动态替换模板Word内容)

目录 Blue留言&#xff1a; Blue的推荐&#xff1a; 什么是poi库&#xff1f; 实现动态替换 第一步&#xff1a;依赖 第二步&#xff1a;实现word模板中替换文字 模板word&#xff1a; 通过以下代码&#xff1a;&#xff08;自己建一个类&#xff0c;随意取名&#xf…

SpringBoot框架学习笔记(五):静态资源访问、Rest风格请求处理、配置视图解析器、接收参数的相关注解详解

1 WEB开发-静态资源访问 1.1 基本介绍 &#xff08;1&#xff09;只要静态资源放在类路径的以下目录&#xff1a;/static、/public、/resources、/META-INF/resources 可以被直接访问。maven项目的类路径即为main/resources目录--对应SpringBoot源码为WebProperties.java类 …

nginx如何开启优先访问压缩文件

nginx输出gzip有很多条件&#xff1a; 开启了gzip&#xff1a;gzip on;gzip_types定义了content-type&#xff0c;需要注意的是text/html是强制性的&#xff0c;不需要也不能再添加这个响应输出的content-type在gzip_types里输出的content-length大于等于nginx配置的gzip_min_…

【TypeScript 一点点教程】

文章目录 一、开发环境搭建二、基本类型2.1 类型声明2.2 基本类型 三、编译3.1 tsc命令3.2 tsconfig.json3.2.1 基本配置项includeexcludeextendsfiles 3.2.2 compilerOptions编译器的配置项 四、面向对象4.1 类4.2 继承4.3 抽象类4.4 接口 一、开发环境搭建 下载Node.js《Nod…

操作系统——进程与线程(死锁)

1&#xff09;为什么会产生死锁&#xff1f;产生死锁有什么条件&#xff1f; 2&#xff09;有什么办法解决死锁&#xff1f; 一、死锁 死锁:多个程序因竞争资源而造成的一种僵局&#xff08;互相等待对方手里的资源&#xff09;&#xff0c;使得各个进程都被阻塞&#xff0c;…

02.C++入门基础(下)

1.函数重载 C支持在同一作用域中出现同名函数&#xff0c;但是要求这些同名函数的形参不同&#xff0c;可以是参数个数不同或者类型不同。这样C函数调用就表现出了多态行为&#xff0c;使用更灵活。C语言是不支持同一作用域中出现同名函数的。 1、参数类型不同 2、参数个数不同…

volatile,最轻量的同步机制

目录 一、volatile 二、如何使用&#xff1f; 三、volatile关键字能代替synchronized关键字吗&#xff1f; 四、总结&#xff1a; 还是老样子&#xff0c;先来看一段代码&#xff1a; 我们先由我们自己的常规思路分析一下代码&#xff1a;子线程中&#xff0c;一直循环&…

DocRED数据集

DocRED数据集文件夹包含多个JSON文件&#xff0c;每个文件都有不同的用途。以下是这些文件的用途解释以及哪个文件是训练集&#xff1a; 文件解释 dev.json&#xff1a;包含开发集&#xff08;验证集&#xff09;的数据&#xff0c;通常用于模型调优和选择超参数。 label_map…

java面向对象进阶进阶篇--《包和final》

一、前言 今天还是面向对象相关知识点的分享&#xff0c;包是写小型项目时不可或缺的存在&#xff0c;final关键字用的地方不算太多。idea会提示我们导包&#xff0c;有时会自动导包&#xff0c;确实十分方便。但是我们也不能不会自己去导包。 面向对象篇不出意外的话本周就要…

【线性代数】矩阵变换

一些特殊的矩阵 一&#xff0c;对角矩阵 1&#xff0c;什么是对角矩阵 表示将矩阵进行伸缩&#xff08;反射&#xff09;变换&#xff0c;仅沿坐标轴方向伸缩&#xff08;反射&#xff09;变换。 2&#xff0c;对角矩阵可分解为多个F1矩阵&#xff0c;如下&#xff1a; 二&a…

python打包exe文件-实现记录

1、使用pyinstaller库 安装库&#xff1a; pip install pyinstaller打包命令标注主入库程序&#xff1a; pyinstaller -F.\程序入口文件.py 出现了一个问题就是我在打包运行之后会出现有一些插件没有被打包。 解决问题&#xff1a; 通过添加--hidden-importcomtypes.strea…

“微软蓝屏”事件引发的深度思考:网络安全与系统稳定性的挑战与应对

“微软蓝屏”事件暴露了网络安全哪些问题&#xff1f; 近日&#xff0c;一次由微软视窗系统软件更新引发的全球性“微软蓝屏”事件&#xff0c;不仅成为科技领域的热点新闻&#xff0c;更是一次对全球IT基础设施韧性与安全性的深刻检验。这次事件&#xff0c;源于美国电脑安全…

【Vue3】工程创建及目录说明

【Vue3】工程创建及目录说明 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日…

全网最全最详细的C++23 标准详解:核心语言改进与新特性

1. 简介 C23 是由 C 标准委员会最新发布的标准&#xff0c;旨在进一步提升 C 语言的功能和开发效率。作为一项重要的编程语言标准更新&#xff0c;C23 引入了多个关键的新特性和改进&#xff0c;使开发者能够编写更高效、简洁和安全的代码。 与 C20 相比&#xff0c;C23 的变…

3112.力扣每日一题7/18 Java 迪杰斯特拉(Dijkstra)算法

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;算法练习关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 目录 迪杰斯特拉&#xff08;Dijkstra&#xff09;算法 解题思路 解题过…

C++学习指南(三)——模板

欢迎来到繁星的CSDN。本期内容主要包括模板template。 目录 一、什么是模板&#xff1f; 二、函数模板 模板的定义方式 模板的实例化&#xff08;确定参数的类型&#xff09; 隐式实例化 显式实例化 实例化顺序 三、类模板和模板类 类模板的实例化 一、什么是模板&#xff1…

智慧职校就业管理:开启校园招聘会新模式

在智慧职校的就业管理系统中&#xff0c;校园招聘会的出现&#xff0c;为学生们提供了一个展示自我、探寻职业道路的舞台&#xff0c;同时也为企业搭建了一座直面未来之星的桥梁。这一功能&#xff0c;凭借其独特的优势与前沿的技术&#xff0c;正在重新定义校园与职场之间的过…

2024中国大学生算法设计超级联赛(1)

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;彩笔ACMer一枚。 &#x1f3c0;所属专栏&#xff1a;杭电多校集训 本文用于记录回顾总结解题思路便于加深理解。 &#x1f4e2;&#x1f4e2;&#x1f4e2;传送门 A - 循环位移解…

python-爬虫实例(5):将进酒,杯莫停!

目录 前言 将进酒&#xff0c;杯莫停&#xff01; 一、浇给 二、前摇 1.导入selenium库 2.下载浏览器驱动 三、爬虫四步走 1.UA伪装 2.获取url 3.发送请求 4.获取响应数据进行解析并保存 总结 前言 博主身为一个农批&#xff0c;当然要尝试爬取王者荣耀的东西啦。 将进…

萝卜快跑突然就火了,背后发生了什么?

近日&#xff0c;百度旗下的自动驾驶出行平台“萝卜快跑”突然在网络上火了起来&#xff0c;成为热门话题。那么&#xff0c;这背后到底发生了什么&#xff1f; 1. 数字误传引发热议 首先&#xff0c;一些误传的数字在传播中起到了推波助澜的作用。例如&#xff0c;百度在2023…