算法笔记——深度/广度优先搜索
深度优先搜索和广度优先搜索主要是用在图的遍历中,模板性很强,我个人认为是比较简单的算法,下面主要写一下深搜和广搜的模板,照着模板多做题基本就能掌握了
深度优先搜索 过程:- 访问指定的起始顶点
- 若当前访问的顶点的邻接顶点有未被访问的,则选择其中一个顶点访问,然后回到第一步
- 若当前的顶点的邻接顶点都已经访问,则返回当前顶点的上一个顶点
如下图,其实就是先沿一条边访问到底,然后再返回访问另一条边
DFS一般通过递归来实现
void dfs(int x){
if (满足退出条件){
退出处理
return;
}
for (;;){//枚举当前顶点的下一个邻接顶点
if (顶点满足条件) {
处理顶点
dfs(顶点);//向下深入遍历
}
}
return ;//退出
}
这里在枚举下一个邻接顶点的时候,如果是在图中,我习惯先定义一个方向向量,然后以此来枚举下一个顶点 以上下左右四个方向为例: 首先定义:
int fx[4][2] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};
枚举:
for (int i = 0; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?