#1 深度优先搜索

深搜思想

DFS其实是针对图论的一种搜索算法,由一个节点出发,不撞南墙不回头式的遍历所有的节点。
在这里插入图片描述
如先遍历1,沿(1,2)遍历2,再沿(2,4)遍历4,撞南墙(边界条件)后返回2,继续下一条路径遍历5,返回,遍历6,返回发现以2为起始点的路径已经遍历完了,继续返回,遍历以1为起始点的下一条路径(1,3)从而遍历3,完成对所有点的遍历

首先深搜是通过递归来实现的,那递归就需要两个条件:1.调用自己 2.要有终止条件
先给出一个dfs的简单模版:

static void dfs(节点xx) {
	if (达到目标状态)  //
    {
    	处理答案
        return ; //结束这条搜索路径
    }
        
    if (边界条件) return;  //判断边界
        
    for (查找所有可行的下一节点) //尝试每一种可能
    { 
		dfs(下一节点) //继续下一步
    }
}

根据代码总结一下dfs所需要的几个点:
1.确定该题目的目标状态和边界条件(最重要,边界条件也用来剪枝)
2.找到节点转移方式(找到遍历的路径)
3.达到目标状态后的处理(如计数,直接返回退出等)


讲个例题:n-皇后
首先这个题我们由第一排开始放棋子
1-1.目标状态:将n个皇后合法地放入到棋盘中
1-2.边界条件:a.当前点位于棋盘外;b.下一步无法合法实现
2.节点转移(路径):

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

bcaktrader策略编写1

。 1 Backtrader策略类编写说明 在上一篇,我大体记录了整个backtrader整体最简流程,策略类中没有实现任何买卖逻辑,只是单纯的打印了每日的收盘价。今天,我将详细介绍策略编写类的构建过程,并构建一个简单的均线策略…

林业调查具体是做些什么?

林业调查是对森林资源进行系统的信息收集和处理的过程。 林业调查涵盖了对林木、林地以及林区内生长的动植物及其环境条件的全面评估,旨在及时掌握森林资源的数量、质量和生长消亡的动态规律。这种调查不仅关注森林本身,还包括与之相关的自然环境和经济…

分销与传销的界限

分销与传销,作为商业活动中的两种销售模式,确实在核心特征和法律地位上存在显著的区别。以下是关于两者的详细分析,以及为什么选择微信分销小程序时,通常建议找外包公司的理由。 一、分销与传销的区别 商业模式: 分销…

【String 类 常用方法详解和归类】全网最细总结

目录 一、 String 介绍二、String 类中查找字符串的方法2.1 常用查找在这里插入图片描述2.2、其他查找 三、转换功能3.1 常用转换方法3.2、其他转换方法 四、判断、比较相关方法4.1、常用判断、比较方法4.2、其他判断、比较方法 五、拆分,截取,替换方法5.1、常用拆分,截取,替换…

linux---生产者和消费者模型

生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据&#…

[数据集][目标检测]吉他检测数据集VOC+YOLO格式66张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):66 标注数量(xml文件个数):66 标注数量(txt文件个数):66 标注类别数…

面试二十七、 CAS和Atomic

CAS锁机制(无锁、自旋锁、乐观锁、轻量级锁)-CSDN博客 1. ABA问题 在C中,可以使用std::atomic和版本号来解决ABA问题。C标准库没有直接提供类似Java的AtomicStampedReference,但可以通过将版本号和指针组合在一起实现类似的效果。…

win系统游戏提示找不到d3dx9_37.dll丢失的解决方法-最简单的解决方法

d3dx9_37.dll 是一个动态链接库文件,属于 Microsoft DirectX 9 的一部分。DirectX 9 是一个用于多媒体应用,特别是游戏和视频的 API,它提供了一套丰富的功能,用于处理图形、声音和输入设备等。d3dx9_37.dll 文件包含了 Direct3D 9…

巨细巨细的白痴级vulntarget-a靶场wp再不会你打死我

ad一,靶场搭建 下载靶场:GitHub - crow821/vulntarget: vulntarget靶场系列 官方拓补图 ps:此处 攻击机ip192.168.87.134,win7ip1为192.168.87.144 下载完毕后直接装入虚拟机不要进去,不要进去,不要进去…

使用LLaMA-Factory微调大模型

使用LLaMA-Factory微调大模型 github 地址 https://github.com/hiyouga/LLaMA-Factory 搭建环境 git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory在 LLaMA-Factory 路径下 创建虚拟环境 conda create -p ./venv python3.10激活环境 c…

RabbiMQ怎么保证可靠性

RabbiMQ怎么保证可靠性 前言生产端问题解决方案代码验证 RabbitMQ问题消费端问题解决方案代码验证 总结 前言 RabbitMQ相信大家都非常熟悉了,今天咱们来聊聊怎么保证RabbitMQ的可靠性。 那什么时候会出现问题呢? 第一种是生产端出现的问题。我们向队列…

CTFHUB-信息泄露-目录遍历和PHPINFO

目录 目录遍历 PHPINFO 目录遍历 很简单,挨着把每个目录都点开看一下 发现2目录下有个 flag.txt 文件,点开发现了本关的flag PHPINFO 这关也很简单,进来之后是一个phpinfo页面,按 CTRL F键打开查询,输入flag&#…

成功解决“ypeError: An Integer Is Required”错误的全面指南

成功解决“ypeError: An Integer Is Required”错误的全面指南 🌈 欢迎莅临我的个人主页👈这里是我深耕Python编程、机器学习和自然语言处理(NLP)领域,并乐于分享知识与经验的小天地!🎇 &#x…

【科研基础】证明积累

1-Bayesian Estimation (P317) Suppose that x = θ + ν w h e r e ν i s a n N ( 0 , σ ) random variable and θ is the value of a n N ( θ 0 , σ 0 ) random variable θ (Fig. 8-7). Find the bayesian estimate θ o f θ . \begin{align…

神经网络与深度学习——第6章 循环神经网络

本文讨论的内容参考自《神经网络与深度学习》https://nndl.github.io/ 第6章 循环神经网络 给网络增加记忆能力 延时神经网络 有外部输入的非线性自回归模型 循环神经网络 简单循环网络 循环神经网络的计算能力 循环神经网络的通用近似定理 图灵完备 应用到机器学习 序列到类…

用贪心算法计算十进制数转二进制数(小数部分)

在上一篇博文用贪心算法计算十进制数转二进制数(整数部分)-CSDN博客中,小编介绍了用贪心算法进行十进制整数转化为二进制数的操作步骤,那么有朋友问我,那十进制小数转二进制,可以用贪心算法来计算吗&#x…

支付系统对接商户

target:离开柬埔寨倒计时-214day 还是美女作为开篇 前言 昨天没有写文章,因为部门团建,我得去给他们画饼,说起来也真的是唏嘘,我一个已经都在计划着离开柬埔寨的人,昨天聚餐还一个个给他们描述未来的前景&a…

5G无线标准演进综述及新技术引入

摘 要 随着经济和社会的发展,5G业务越来越丰富多彩,1080P高清视频、裸眼3D、网联汽车、云手机等新业务、新终端对网络的要求也越来越高;另一方面,5G标准持续演进,在MIMO、载波聚合、移动性管理、uRLLC、切片、定位等方…

海思SD3403,SS928/926,hi3519dv500,hi3516dv500移植yolov7,yolov8(19)-Yolov10探索

YOLOv10 开源有几天了,看性能是比较强的,但是试过的一些人说没有YOLOv8好,实际效果以测试结果为准,这里创新点算是去掉了之前YOLO的NMS步骤,论文题目也说了NMS-Free,以此来提高小目标检测率,减少计算冗余,也没有NMS的计算时间提高实时性。 这个倒是让我看到了以后可以…

以sqlilabs靶场为例,讲解SQL注入攻击原理【18-24关】

【less-18】 打开时,获取了自己的IP地址。,通过分析源码知道,会将用户的user-agent作为参数记录到数据库中。 提交的是信息有user-Agent、IP、uname信息。 此时可以借助Burp Suite 工具,修改user_agent,实现sql注入。…