回溯总结(一)基础概念及模板

news2024/11/29 10:34:45

1.回溯是什么?

  • 回溯,也叫回溯搜索法,搜索的一种方式
  • 回溯搜索实际上也是一种暴力搜索(本质是穷举)(对于有些问题是唯一可以解决的办法了,for循环是不适用的)
  • 和别的搜索不同之处在于它能处理的数据可以抽象成树结构

回溯和递归的区别

        递归是个方法的话,回溯是其中的一个操作。

        回溯方法实际上也是递归方法。回溯是递归的伴生品。

补充

        递归和迭代的区别是迭代通过自定义栈模拟递归的。

2.回溯用来解决哪些问题?

图摘自《代码随想录》

总结:

        组合问题|排列问题: 组合不强调顺序,排列强调顺序

如何抽象成树结构:(前提:回溯都是在集合中找满足条件的子集)

        1.集合的大小:树的宽度

        2.递归的深度:树的深度

        3.满足条件的结果:叶子节点

递归就要有终止条件,所以必然是一棵高度有限的树(N叉树)。

图摘自《代码随想录》

3.回溯解题模板

1.确定返回值及参数

        一般返回值void

        一般名称为backtracking

        一般参数列表比较复杂,可能需要一边梳理思路,一边添加。

2.确定终止条件 

        在叶子节点收集满足条件的结果

        搜索的结果总是根节点到叶子节点的路径,可以使用数组来保存。

3.回溯搜索遍历过程:

        一般是一个for循环,遍历当前分支

        用来撤销当前操作,向上一层返回

【建议熟记版】 

void backtracking(参数) {
    if (终止条件) {
        存放结果;
        return;
    }

    for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
        处理节点;
        backtracking(路径,选择列表); // 递归
        回溯,撤销处理结果
    }
}

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

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

相关文章

基于混沌算法的图像加密解密系统

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义: 随着信息技术的迅猛发展,图像的传输和存储已经成为现代社会中不可或缺的一部分。然而,随着互联网的普及和信息的快速传播&am…

Node-red的节点离线安装

Node-red节点离线安装 前言 目前越来越高的数据安全的要求,因此我们很多的生产类服务器是无法进行在线化部署的,为了解决这一问题,我们需要在无法连接外部网络环境的情况下,实现Node-red的节点的安装,以满足项目的需…

el-dialog 垂直居中

写文章总是在想引言,怎么开头才会显的更加优雅,更加让读者朋友给我点赞。看到有人点赞,我就觉的进行技术经验分享是一件非常愉快的事情,可是打小作文写的不好不会组织语句,就喜欢直来直去。老师说让写春天的作文&#…

vue2 element-ui select下拉框 选择传递多个参数

<el-select v-model"select" slot"prepend" placeholder"请选择" change"searchPostFn($event,123)"> <el-option :label"item.ziDianShuJu" :value"{value:item.id, label:item.ziDianShuJu}" v-for&qu…

文件夹批量改名:轻松管理文件夹,随机重命名不求人

在日常生活和工作中&#xff0c;文件夹批量改名是一个常见的需求。当有大量的文件夹时&#xff0c;它们可能会变得混乱和难以管理。有时候要对大量的文件夹进行重命名&#xff0c;以便更好地组织和管理这些文件。手动重命名每个文件夹可能会非常耗时且容易出错。现在可以来看下…

印度股市荣登全球第四,释放了什么讯号?

KlipC报道&#xff1a;随着散户迅速增加&#xff0c;外国资金重新流入&#xff0c;自2020年3月大流行低点以来&#xff0c;截至当地时间12月4日&#xff0c;其印度股市总市值已经上涨到3.93万亿美元&#xff0c;仅次于美国、中国和日本。 值得一提的是&#xff0c;Sensex指数飙…

java springboot简单了解数据源实现 与 springboot内置数据源

之前 我们讲到的项目 数据库管理 用了三种技术 数据源管理方式 我们选择了: DruidDataSource 持久化技术: MyBatis-Plus / MyBatis 数据库: MySql 那么 我们在刚接触数据库连接时 是没用配置Druid的 那它有没有用数据源呢&#xff1f; 我们接触过的配置Druid的方式有两种 用…

CSS特效026:扇骨打开关闭的动画

CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧&#xff0c;主要包含CSS布局&#xff0c;CSS特效&#xff0c;CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点&#xff0c;CSS特效主要是一些动画示例&#xff0c;CSS花边是描述了一些CSS…

xcode ——Instrumets(网络连接调试)使用

环境&#xff1a; instruments 使用只能在真机调试时使用&#xff0c;且真机系统必须ios15 点击debug 按钮——Network——Profile in Instruments 然后就可以看到如下面板 展开运行的项目&#xff0c;点击session下的域名&#xff0c;下方回出现该域名下的网络请求。点击Deve…

持续集成交付CICD:Jenkins使用GitLab共享库实现前后端项目Sonarqube

目录 一、实验 1.Jenkins使用GitLab共享库实现后端项目Sonarqube 2.优化GitLab共享库 3.Jenkins使用GitLab共享库实现前端项目Sonarqube 二、问题 1.sonar-scanner 未找到命令 2.npm 未找到命令 一、实验 1.Jenkins使用GitLab共享库实现后端项目Sonarqube &#xff08…

现代版“田忌赛马”:IPMT如何实现资源利用最大化

摘要&#xff1a;在流程调整和产品重整过程中&#xff0c;IPMT发挥了至关重要的作用。IPMT是什么&#xff1f;它的职责到底是什么&#xff1f;每个公司必须要有IPMT吗&#xff1f; 1992年&#xff0c;IBM在激烈的市场竞争下&#xff0c;遭遇到了严重的财政困难&#xff0c;利润…

用js自定义一个(v-model)vModel双向绑定函数

vue中的v-model是双向绑定的, 我们自己用JavaScript实现一个双向绑定vModel函数。 // element 元素或者#id,.class,div 得是input标签 // data 对象 // 将要绑定property 对象中的key<input class"vmodel"/>function vModel(element, data, property) {if (…

外汇天眼:假冒、非法经营成常态?超60家外汇平台被拉黑

近期&#xff0c;全球范围内多个国家的金融监管机构纷纷发出警告&#xff0c;揭露一系列假冒、非法经营的外汇交易平台。比利时金融服务和市场管理局&#xff08;FSMA&#xff09;发现53家外汇平台涉嫌非法运营&#xff0c;而意大利CONSOB和英国金融行为监管局&#xff08;FCA&…

【Redis】Redis 的学习教程(十三)Redis 各场景

由于Redis 支持比较丰富的数据结构&#xff0c;因此他能实现的功能并不仅限于缓存&#xff0c;而是可以运用到各种业务场景中&#xff0c;开发出既简洁、又高效的系统 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-bo…

Ribbon 饥饿加载

Ribbon默认是采用懒加载&#xff0c;即第一次访问时才会去创建LoadBalanceClient&#xff0c;请求时间会很长而饥饿加载则会在项目启动时创建&#xff0c;降低第一次访问的耗时&#xff0c;通过下面配置开启饥饿加载: 一、懒加载 Ribbon 默认为懒加载即在首次启动Application…

防火墙 iptables的使用

目录 什么是防火墙 原理 代理 防火墙的工具 4表5列 五链&#xff1a;控制流量的时机 四个表&#xff1a;如何控制流量 ​编辑 iptables 软件 格式 选项 跳转 查iptables 的规则 添加规则 A I 删除规则 清空规则 替换规则 R 修改默认规则&#xff08;默…

vue2-省市县三级联动选择框

Json数据&#xff1a;https://yjy-oss-files.oss-cn-zhangjiakou.aliyuncs.com/tuxian/area.json 如何访问本地文件参考&#xff1a;vue-访问本地json文件_vue3读取json文件-CSDN博客 .vue文件&#xff1a; <template><select v-model"mailAddress1" style…

调查显示 IT 服务事件越来越频繁

事件管理平台提供商 Transposit 对美国 1,000 名 IT 运营、DevOps、站点可靠性工程 (SRE) 和平台工程专业人士进行的一项调查发现&#xff0c;超过三分之二 (67%) 的人发现故障率有所增加过去 12 个月中影响客户的服务事件的频率。 今天在Kubecon CloudNative会议上宣布的调查…

在 AlmaLinux 9.2 上安装Oracle Database 23c

在 AlmaLinux 9.2 上安装Oracle Database 23c 1. 安装 Oracle Database 23c2. 连接 Oracle Database 23c3. 重启启动后&#xff0c;手动启动数据库4. 重启启动后&#xff0c;手动启动 Listener5. 手动启动 Pluggable Database6. 自动启动 Pluggable Database7. 设置开机启动数据…

PDF控件Spire.PDF for .NET【转换】演示:将 SVG 转换为 PDF

SVG 是一种矢量图形文件格式&#xff0c;用于创建可缩放且不损失质量的图像。然而&#xff0c;PDF由于支持高质量打印、加密、数字签名等功能&#xff0c;更适合共享和打印。将SVG转换为PDF可以保证图像在不同设备和环境下都有良好的显示效果&#xff0c;并更好地保护知识产权。…