算法设计方法之回溯算法

回溯算法

介绍

回溯算法是算法设计中的一种方法。回溯算法是一种渐进式寻找并构建问题解决方式的策略。回溯算法会先从一个可能的动作开始解决问题,如果不行,就回溯并选择另一个动作,直到将问题解决。

就像你在一个迷宫里面遇到了当前有三条岔路,你选择了第一条后发现此路不通,那你是不是要回到原点,进行选择第二条道路,以此类推,最后选择一条正确的道路。

什么问题适合用回溯算法解决?

  • 有很多分岔路
  • 这些路里面有死路,也有出路
  • 通常需要用递归来模拟所有的路

基础案例

场景一

全排列

// 输入
const input = [1, 2, 3]// 输出
const output = [[1, 2, 3],[1, 3, 2],[2, 1, 3],[2, 3, 1],[3, 1, 2],[3, 2, 1]
]

步骤:

  1. 用递归模拟所有出路的情况
  2. 遇到包含重复元素的情况,就回溯
  3. 收集所有到达递归终点的情况并返回

原文链接:菜园前端

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

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

相关文章

Ubuntu 的安装及其设置

文章目录 安装 Ubuntu屏幕分辨率设置修改软件源服务器锁屏时间设置设置 dash跨系统拖拽复制文件的设置 安装 Ubuntu 首先安装 VMware 虚拟机,虚拟机的安装比较简单,一步步点击Next即可完成安装。 安装完成后启动虚拟机,点击创建新的虚拟机。…

AC+AP 旁挂式连接配置(华为)

AR1路由器配置 # interface GigabitEthernet0/0/0 ip address 10.1.30.1 255.255.255.0 ip route-static 10.1.20.0 255.255.255.0 10.1.30.2 # LSW1核心交换机 # dhcp enable vlan batch 10 20 30 interface Vlanif20 ip address 10.1.20.1 255.255.255.0 dhcp select in…

回归预测 | MATLAB实现基于ELM-Adaboost极限学习机结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于ELM-Adaboost极限学习机结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于ELM-Adaboost极限学习机结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于ELM-Adaboost极限学…

模拟面试2

1.说一说ArrayList的实现原理? ArrayList底层基于数组实现,内部封装了Object类型的数组,实现了list接口,通过默认构造器创建容器时,该数组被初始化为一个空数组,首次添加数据时再将其初始化为容量为10的数组…

【个人笔记】linux的cd命令与目录结构理解

cd命令 cd(英文全拼:change directory)命令用于改变当前工作目录的命令,切换到指定的路径。 若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。 另外,~ 也表示为 home 目录 的…

【二分查找】LCP 18. 早餐组合

📍前言 🕺作者: 迷茫的启明星 学习路线C语言从0到1C初阶数据结构从0到1 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对…

菜鸟编程-python-函数,模块

目录 Python 函数 定义一个函数 语法 实例(Python 2.0+) Python 模块 support.py 模块: import 语

Java集合(List、Set、Map)

Java中的集合是用于存储和组织对象的数据结构。Java提供了许多不同的集合类,包括List、Set和Map等,以满足不同的需求。下面将介绍一些常见的Java集合类及其使用方法。 一、List List是一个有序的集合,它允许元素重复出现,并提供…

ArcGIS Pro工具一部分解释

序号 工具 功能介绍 1. 打包工程(PackageProject) 把工程所有内容打包一个文件 2. 合并工程(ConsolidateProject) 把工程和数据整理到同一个文件夹下 3. 要素转线(FeatureToLine) 把面要素转线要素或线要素打断 4. 定义投影(DefineProjection)

three.js学习记录(基础)

前言: 页面渲染3D特效,可以从各种图表库(例如ECharts)中寻找各种适用的模版,也可以寻找第三方插件。。。 一直以来都对three.js充满向往,终于偷闲找了个借口学了起来 参考资料 Three.js – JavaScript 3D…

什么?微信朋友圈能够一键转发了?

作为「国民级」聊天软件,微信朋友圈功能一直备受关注,毕竟社交 3 大巨头中,QQ 和微博都可以转发动态。那微信朋友圈能不能也像 QQ 空间这样,点击转发能分享到 QQ、微信和朋友圈呢? 那到底朋友圈转发怎么个转法&#xf…

流程图实现,基于vue2实现的流程图

1.基本思路 flex布局 伪元素实现竖直的连接线组件递归 2.效果图 2.1基础的(未截全,大致长这样) 2.2带有收缩功能的,可以展开和收缩并显示数量 3.待需要优化的点,根节点居中是基于整个流程图大小的来居中的&#xf…

使用 appium 进行微信小程序的自动化测试

目录 前言: 微信小程序结构 自动化用例的调整 示例代码 后记 前言: 微信小程序是一种流行的移动应用程序,它在移动设备上提供了丰富的功能和用户体验。为了确保微信小程序的质量和稳定性,自动化测试是必不可少的一环。Appiu…

肖sir___环境相关的面试题

环境相关面试题 1、请简述多有米环境的搭建、用到了哪些工具和流程介绍? jdk、服务器、代码包、数据库 2、查看当前端口被哪个应用程序占用了? netstat -ntlp |grep 端口号 lsof -i :端口号 ps -ef|grep 端口号 3、Tomcat和Nginx的区别,ngi…

VCSEL器件的常见参数有哪些?如何测试?

概述 垂直腔面发射激光器(VCSEL)是一种激光发射方向垂直于P-N结平面,而谐振腔面平行于P-N结平面的半导体激光器,它属于面发射激光器的一种。而EEL边射型激光器的光则是沿着水平方向,由芯片的边缘射出。与EEL相比, VCSEL的生产过程更具经济效益并且响应快,因此在越来越多的应用中…

element-ui message消息提示组件 ①延长提示消息在页面停留时间②提示消息换行

以实现下面的效果为示例 完整代码&#xff1a; let msgList ["数据1被引用", "数据2被引用"];// 使用html的换行标签拼接信息&#xff0c;默认行距太小&#xff0c;此处用两个<br/><br/>let message 以下数据不能删除&#xff0c;原因是&…

oracle常见面试回答

以下是Oracle面试中常见的一些问题和附加答案&#xff1a; 问题&#xff1a;什么是Oracle分区表&#xff1f; 答案&#xff1a;Oracle分区表是一种将表分成多个部分的机制&#xff0c;这些部分被称为分区。每个分区都是一个独立的对象&#xff0c;可以单独管理和维护。分区表…

2023出海增长背后的隐忧

2023出海增长背后的隐忧 2023.7.19版权声明&#xff1a;本文为博主chszs的原创文章 今年出口逆势增长的领域&#xff0c;新能源车、锂电池、太阳能电池&#xff0c;号称新三样&#xff0c;有数据支撑&#xff0c;看起来鼓舞人心。 见&#xff1a;外贸出口“新三样”&#xf…

有Root与无Root安装git-lfs

有Root与无Root安装git-lfs 直接安装 先查看arm还是AMD 例如当前使用Rocky Linux 8.8版本的内核。因此&#xff0c;应该下载适用于Rocky Linux 8.x的Git LFS安装包。 您可以按照以下步骤在Rocky Linux上安装Git LFS&#xff1a; 打开终端或命令提示符窗口。 使用以下命令下…

python、go观察者模式

观察者模式&#xff0c;核心在于 被观察者的信息发生改变会通知观者者被观察者可以添加和删除观察者观察者需要有更新的行为 python实现 # 观察者 class Observer:def __init__(self, name):self.name namedef update(self, content):print(f"【{self.name}】接收到消…