深度优先搜索重要模板

深度优先搜索(Depth-First-Search)

从起点出发,走过的点要做标记,发现有没走过的点,就随意挑一个往前走,走不 了就回退,此种路径搜索策略就称为“深度优先搜索”,简称“深搜”。

其实称为“远度优先搜索”更容易理解些。因为这种策略能往前走一步就往前走一 步,总是试图走得更远。所谓远近(或深度),就是以距离起点的步数来衡量的。

中国大学mooc 郭炜老师的算法上讲的几个模板(伪代码)
我写了一下注释,便于理解

1.判断从V出发是否能走到终点

int main()
{将所有点标记为新点起点 = 1;终点 = 8;cout<<Dfs(起点);
}bool Dfs(V){if(V为终点)return true;if(V为旧点)return false;将V标记为旧点对和V相邻的每个节点U{//往往要写多个if,将每个相邻节点都考虑到if(Dfs(U)==true)return true;
}return fasle;
}

2.判断从V出发是否能走到终点,如果能,要记录路径:

Node path[MAX_LEN];//MAX_LEN取节点总数即可
//path,记录路径。node,可以是int(节点标号),也可以是结构题类型
int depth;//深度int main()
{将所有点标记为新点;//一般memset全变成0表示新点,1表示旧点depth = 0;if(Dfs(起点)){for(int i=0;i<=depth;++i)//输出经过的每个点的路径cout<<path[i]<<endl;}
}bool Dfs(V){if(V为终点)path[depth]=V;return true;
}if(V为旧点)return false;将V标记为旧点;path[depth]=V;++depth;对和V相邻的每个节点U{if(Dfs(U)==true)
//如果返回true,那么说明,从v开始能走到终点
}--depth;//现在v是放到path里的,但是返回false,说明从v出发走不到终点,//v不应出现在路径里,所以深度减一。return false;
}

3.深度优先遍历图上所有节点

Dfs (V) { if( V是旧点 )return; //如果v已经走过,那马上返回将V标记为旧点 ;对和 V相邻的每个点 U { Dfs (U);//包含他的父节点和子节点都要涉及到//常用if判断条件是否满足,然后dfs}
}
int main() {将所有点 都标记为新;while( 在图中能找到新点 k)Dfs (k);//这样避免了有多个连通图的情况
}

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

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

相关文章

360浏览器查看html文件在哪里,360浏览器8菜单栏怎么弄出来?如何查看网站源代码...

今天想查看一个页面的源代码&#xff0c;没想到这个页面竟然禁止了鼠标右键功能&#xff0c;所以无法通过鼠标右键选择“查看源代码”来查看。然后就想通过 360 浏览器的“查看源代码”按钮进行查看&#xff0c;没想到找了半天都找不到这个按钮&#xff0c;最后只能通过查看源代…

tcp欢动窗口机制_TCP协议中的窗口机制------滑动窗口详解

一、窗口机制的分类在TCP协议当中窗口机制分为两种&#xff1a;1.固定的窗口大小2.滑动窗口二、固定窗口存在的问题如下图所示&#xff1a;我们假设这个固定窗口的大小为1&#xff0c;也就是每次只能发送一个数据&#xff0c;只有接收方对这个数据进行了确认后才能发送第二个数…

1-1.HTML、CSS、JavaScript语言在web前端开发中的作用

HTML是网页内容的载体。内容就是网页制作者放在页面上想要让用户浏览的信息&#xff0c;可以包含文字、图片、视频等。 CSS样式是表现。 就像网页的外衣。比如&#xff0c;标题字体、颜色变化&#xff0c;或为标题加入背景图片、边框等。所有这些用来改变内容外观的东西称之为…

判断html()中有长度,VBS 字符串长度判断的问题

对于给你一个字符串你应该怎样判断他的字符串长度&#xff0c;试举一些典型的例子C语言——字符串长度的计算方法提示&#xff1a;(1)计算字符串长度时关键是要注意辨认转义字符&#xff1b;(2)一个转义字符总是以反斜杠开始&#xff0c;再加一个其他字符组成。所以&#xff0c…

maxvalue mysql自动分区_创建mysql表分区的方法

创建mysql表分区的方法我来给大家介绍一下mysql表分区创建与使用吧&#xff0c;希望对各位同学会有所帮助。表分区的测试使用&#xff0c;主要内容来自于其他博客文章以及mysql5.1的参考手册。表分区是最近才知道的哦&#xff0c;以前自己做都是分表来实现上亿级别的数据了&…

html概述

什么是html&#xff1f; HTML&#xff08;Hyper Text Markup Language&#xff09;超文本标记语言。 标记语言就是让文本展示更丰富&#xff0c;更美观的一种语言。比如说文本加粗 更换颜色 斜体 html这种标记语言就是为了让网页展示更丰富&#xff0c;更美观的一种语言 开发…

计算机专业后悔么,王言匀

《中华独特疗法大成》分方法和治疗两篇。方法篇依据用药与否&#xff0c;分为药物疗法和非药物疗法两章&#xff0c;药物疗法按照给药途径分为内服法和外用法两节&#xff1b;非药物疗法根据施术手段分为针灸、推拿、气功及其他4节。这些章节介绍了273种治疗方法的基本内容、适…

python制作网页样式与布局_Python开发【第十二篇】:CSS装饰页面

CSS称为层叠样式表&#xff0c;是Cascading Style Sheets的缩写。CSS不仅可以静态地修饰网页&#xff0c;还可以配合各种脚本语言动态地对网页各元素进行格式化。CSS引入方式&#xff1a;行内式&#xff1a;对标签元素添加style属性&#xff0c;在style属性中设置CSS样式&#…

html标签的用途

语义化。那么什么叫做语义化呢&#xff0c;说的通俗点就是&#xff1a;明白每个标签的用途&#xff08;在什么情况下使用此标签合理&#xff09; 比如&#xff0c;网页上的文章的标题就可以用标题标签&#xff0c;网页上的各个栏目的栏目名称也可以使用标题标签。文章中内容的…

应用计算机散热的原理是什么,水冷散热器是什么原理?水冷可以带给机箱多大的散热作用?...

用户若是CPU安装了水冷散热器&#xff0c;就可以利用水快速导热和散热的特性加强主机硬件的散热效果&#xff0c;和普通风扇的散热效果相比&#xff0c;水冷可以更加有效的降低硬件温度和热量散发速度。阅读下文了解水冷散热器的原理和作用。CPU水冷散热器是指使用液体在泵的带…

markdown改字体和背景颜色(html)

背景色是 1 背景色2 BlueViolet 背景色是orange 字体的设置我是黑体字 我是微软雅黑 我是华文彩云 color#0099ff size72 face”黑体” color#00ffff colorgray Size&#xff1a;规定文本的尺寸大小。可能的值&#xff1a;从 1 到 7 的数字。浏览器默认值是 3 <tabl…

计算机展望未来网络形态,在学习中展望未来

域。虚拟现实技术、模拟技术、流媒体以及网络技术使我们的教育达到了前所未有的地步。利用技术&#xff0c;我们可以把浩瀚的宇宙、微小的分子、原子世界展现在学生面前&#xff1b;利用技术&#xff0c;学生不用走出教室&#xff0c;就可以遨游五洲&#xff0c;跨越四海。我们…

批量画同心不同半径圆lisp_cad绘制同心圆lisp二次开发源代码

简介&#xff1a;本资源为autocad同心圆lisp二次开发源代码下载,该代码文件可以直接在autocad中加载,执行,可以实现的功能为绘制多个间距一定的同心圆源代码&#xff1a;(Defun C:TXY ()(SetQ cp (GetPoint "圆心&#xff1a;")cr (GetDist cp "基础半径&#x…

mvc html传参数乱码,SpringMVC Controller 接收页面传递的中文参数出现乱码

在Controller中接收到的POST参数如果是中文的话&#xff0c;显示为乱码。已知客户端传过来时编码为UTF-8。问题产生分析&#xff1a;spring MVC中默认的编码格式为“ISO-8859-1”,因此造成乱码。简单的解决方式&#xff1a;New String(request.getParameter(“xxx”).getBytes(…

lisp scheme 果壳_走出Lisp(Scheme)困境

从去年开始入坑Lisp&#xff0c;周周转转也算是基本入门了这一传说中的语言。Lisp确实是一门很开明的语法规范。lambda是基本定义形式&#xff0c;递归在其骨子深处&#xff0c;试图通过函数表达世界&#xff0c;的确这个世界是周而复始的&#xff0c;有些人愿意称为循环&#…

jenkins部署流程图_持续集成-jenkins(自动化部署流程图)

1、什么是持续集成持续集成&#xff1a;简称CI。持续集成的特点&#xff1a;自动完成、保证每个时间点上团队成员提交的代码是成功集成的、需求不明确或频繁变更的情景、帮助企业减少管理风险。持续集成的应用场景&#xff1a;持续集成(CI)系统组成部分&#xff1a;版本控制系统…

django 表单html5,我们如何在django管理表单中添加动态html5数据属性

你继承Django的ModelChoiceField并修改它的render_options()和render_option()方法来显示你所需要的对象的属性。我想你也需要你自己的ModelChoiceIterator的子类&#xff0c;这样它不仅可以吐出id/label元组&#xff0c;而且可以分离出你需要的所有数据。例我只是找到了一个自…

中蜂几月份自然分蜂_蜜蜂什么时候自然分蜂?

一、自然分蜂时间蜂群自然分蜂一般多在春季晴朗天气的上午10点到下午2点左右发生&#xff0c;对于为什么蜂群多在春季自然分蜂是有原因&#xff0c;蜂群发生自然分蜂必须要具备一系列的条件才行&#xff0c;第一个条件是蜂群的群势要足够强大&#xff0c;第二个条件是外界蜜源丰…

计算机办公应用软件初级,电脑办公软件有哪些?桌面便签办公软件基础教程

原标题&#xff1a;电脑办公软件有哪些&#xff1f;桌面便签办公软件基础教程Windows电脑上的办公软件有很多&#xff0c;很多网友都觉得电脑上用的桌面便签小工具不算办公软件&#xff0c;其实只要是对工作有帮助的电脑程序&#xff0c;在某种程度上来说都可以说是办公小工具软…

电脑开机启动修复无法自动修复此计算机,Win7系统开机无法自动修复此计算机如何解决...

在使用win7系统的时候&#xff0c;总是会遇到一些问题&#xff0c;比如就有用户反映说开机提示自动修复&#xff0c;导致无法正常进入操作系统&#xff0c;经过分析部分系统修复报错文件为&#xff1a;X:Windowssystem32driversspoon.sys&#xff0c;那么要怎么解决这样的问题呢…