搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
小舞很执着
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
ES入门十一:正排索引和倒排索引_elasticsearch中的正排索引时怎么实现的
2
git push -u orgin master 出现错误_git push -u origin "master"失败
3
在VScode中使用GIT_vscode gitflow
4
c# 模仿 vue 实现 winform 的数据模型双向绑定_c# 像vue绑定
5
gdb调试工具
6
[SpringBoot的中间件生涯 ] SpringBoot+JPA+Cache+Redis实现缓存效果_jpa redis 缓存
7
python可以考的资格认证有哪些?_python认证
8
智能合约中权限管理不当_智能合约可以实现授权管理吗
9
【报错】Job for httpd.service failed because the control process exited with error code.(CentOS 8)_job for dhcpd.service failed because the control p
10
vue2.x搭建saas项目系列之九:utils、directives、filters、types_$fmomputils
当前位置:
article
> 正文
BFS和DFS算法原理(通俗易懂版)
作者:小舞很执着 | 2024-06-19 17:59:03
赞
踩
bfs
DFS 算法
思想:一直往深处走,直到找到解或者走不下去为止
BFS算法
DFS:使用
栈
保存未被检测的结点,结点按照深度优先的次序被访问并依次被压入栈中,并以相反的次序出栈进行新的检测。
BFS:使用
队列
保存未被检测的结点。结点按照宽度优先的次序被访问和进出队列。
框架:
BFS:
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;
const int maxn=100;
bool vst[maxn][maxn]; // 访问标记
int dir[4][2]={0,1,0,-1,1,0,-1,0}; // 方向向量
struct State // BFS 队列中的状态数据结构
{
int x,y; // 坐标位置
int Step_Counter; // 搜索步数统计器
};
State a[maxn];
bool CheckState(State s) // 约束条件检验
{
if(!vst[s.x][s.y] && ...) // 满足条件
return 1;
else // 约束条件冲突
return 0;
}
void bfs(State st)
{
queue <State> q; // BFS 队列
State now,next; // 定义2 个状态,当前和下一个
st.Step_Counter=0; // 计数器清零
q.push(st); // 入队
vst[st.x][st.y]=1; // 访问标记
while(!q.empty())
{
now=q.front(); // 取队首元素进行扩展
if(now==G) // 出现目标态,此时为Step_Counter 的最小值,可以退出即可
{
...... // 做相关处理
return;
}
for(int i=0;i<4;i++)
{
next.x=now.x+dir[i][0]; // 按照规则生成
下一个状态
next.y=now.y+dir[i][1];
next.Step_Counter=now.Step_Counter+1; // 计数器加1
if(CheckState(next)) // 如果状态满足约束条件则入队
{
q.push(next);
vst[next.x][next.y]=1; //访问标记
}
}
q.pop(); // 队首元素出队
}
return;
}
int main()
{
......
return 0;
}
DFS:
DFS:
/*
该DFS 框架以2D 坐标范围为例,来体现DFS 算法的实现思想。
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
const int maxn=100;
bool vst[maxn][maxn]; // 访问标记
int map[maxn][maxn]; // 坐标范围
int dir[4][2]={0,1,0,-1,1,0,-1,0}; // 方向向量,(x,y)周围的四个方向
bool CheckEdge(int x,int y) // 边界条件和约束条件的判断
{
if(!vst[x][y] && ...) // 满足条件
return 1;
else // 与约束条件冲突
return 0;
}
void dfs(int x,int y)
{
vst[x][y]=1; // 标记该节点被访问过
if(map[x][y]==G) // 出现目标态G
{
...... // 做相应处理
return;
}
for(int i=0;i<4;i++)
{
if(CheckEdge(x+dir[i][0],y+dir[i][1])) // 按照规则生成下一个节点
dfs(x+dir[i][0],y+dir[i][1]);
}
return; // 没有下层搜索节点,回溯
}
int main()
{
......
return 0;
}
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/小舞很执着/article/detail/737283
推荐阅读
article
HBase
安装
配置
实验报告_
hbase
安装
与
配置
实验总结...
HBase
安装
配置
①下载压缩包(选择与自己
安装
的Hadoop版本的兼容版本,见后面附录)官网下载地址:https://m...
赞
踩
article
Mamba
详细解析_
mamba
解读
...
Mamba
- 新颖的选择性状态空间模型(无需注意模块和MLP模块)- 通用的序列模型主干。允许状态空间的参数根据输入动...
赞
踩
article
ByteTrack
流程
剖析
(C++版本)_
bytetrack
c++
...
本文主要用于记录当前阶段对Bytetrack官方代码进行
剖析
进展,方面后面优化。
ByteTrack
发表于ECCV 20...
赞
踩
article
大
数据
DataX
-
Web
详细
安装
教程_
datax
web
...
大
数据
DataX
-
Web
详细
安装
教程_
datax
web
datax
web
目录 一...
赞
踩
article
代码
随想录
训练营Day 29|
Python
|
Leetcode
|1005.K次取反后
最大化
的
数组
和
●...
使用current_sum
和
total_sum分别记录当前gas容量,如果current_sum代码
随想录
训练营Day ...
赞
踩
article
RoboWare
Studio
软件
安装
_
robotstudio
卸载干净...
来源:微信全球ROS开发者公众号一、
RoboWare
Studio
软件特性
RoboWare
Studio
是一个ROS集...
赞
踩
article
python
天气
数据分析
与处理,用
python
数据分析
天气
_
python
天气
数据分析
与处理
csdn
...
line_chart.add(‘最高气温‘,TempeMax) #add数据时,添加元素一定要是int整形。line_c...
赞
踩
article
[
C++
]基于
C++
opencv
结合
vibe
和
sort
tracker
实现高空抛物实时检测...
全称特点:简单、高效、实时性强应用领域:适用于各种需要实时多目标跟踪的场景,如监控视频分析、自动驾驶汽车感知、无人机追踪...
赞
踩
article
OpenCV
图像处理
基础操作汇总
_
opencv
能读
jpg
格式
图片吗...
1、使用
opencv
读写图像
OpenCV
支持
jpg
、png、tif等
格式
图像读取。import cv2import ma...
赞
踩
article
数据结构
与
算法
—
插入
排序
&
选择
排序
_
插入
排序
和
选择
排序
...
介绍
数据结构
与
算法
中:
插入
排序
和
选择
排序
_
插入
排序
和
选择
排序
插入
排序
和
选择
排序
目录 一...
赞
踩
article
[
C#
]
winform
部署
yolo
v9
的
onnx
模型_
yolo
v9
c#...
本文介绍了如何在
C#
WinForms应用中部署YOLO
v9
模型,通过ONNX格式转换使其跨框架可用,利用ONNXRunt...
赞
踩
article
LLM
大
模型
生产
部署
的12个最佳
实践
_
llm
实践
...
大型语言
模型
(
LLM
) 彻底改变了自然语言处理和理解领域,实现了跨各个领域的广泛人工智能应用。然而,在
生产
中
部署
LL...
赞
踩
article
flstudio
21
破解
汉化版
2024最新
水果
编曲
使用
教程_
水果
flstudio
编曲
...
播放列表将目标音频文件加载成功后,会在1号音轨中看到它的音频剪辑,这时我们点击音频剪辑左上角的选项按钮,在弹出的菜单中依...
赞
踩
article
Android
从
源码
解析三:
View
绘制
流程...
相信大家都知道我们所看到的控件都是直接或者间接的继承
View
类,下面我们看一下它是如何
绘制
在我们视野里的。 要知道,每一...
赞
踩
article
数据
同步
工具
DataX
的
安装
和使用说明_
datax
opengauss
...
下面运行示例
同步
程序,模拟产生10万条一样的
数据
,有5个字段。然后输出但不进行print。FrameWork部分设置了同...
赞
踩
article
linux
企业版
火绒
(
火绒
终端
安全
管理系统
V2.0)
安装
_
火绒
linux
版...
火绒
官网申请,填写等企业信息,大概40-50分钟接到
火绒
服务人员电话,确认详细信息,分配授权(发邮箱)。管理中心的授权给...
赞
踩
article
希尔
排序
—
C语言
实现_
希尔
排序
c
...
希尔
排序
c
目录 前言
希尔
排序
发展历史 基本思想 时间复杂度  ...
赞
踩
article
【
Java
数据结构
】
详解
LinkedList
与
链表
(
一
)...
所以,我们在本文中详细讲述了
链表
的概念和结构,并成功模拟了无头非循环单
链表
的实现。在下篇文章中,我们将带来
一
些关于单
链表
...
赞
踩
article
IDEA
使用
SVN
进行
项目
版本管理_从
svn
拉取的
项目
怎么在
idea
中进行管理...
开发类 -
IDEA
2019.3 配置
SVN
1.准备环境:
IDEA
2019.3.4
SVN
版本1.14一、 tor...
赞
踩
article
BS-
1python
基础知识
-1.5
语句
、
表达式
与流程控制_在确定
序列
长度的情况下,
可以
用多
变量
赋...
python
语句
/
表达式
与if分支)_在确定
序列
长度的情况下,
可以
用多
变量
赋值
语句
把
元组
、
列表
和
字符串
等
序列
解在确定
序列
...
赞
踩
相关标签
深度学习
人工智能
python
算法
神经网络
语言模型
c++
目标跟踪
大数据
DataX
DataX-Web
leetcode
职场和发展
RobotWare studio
opencv
开发语言
图像处理
计算机视觉
排序算法
数据结构
c#