最近在更新一些自己学的知识点
这次轮到bfs了
首先就要提到bfs和dfs的区别,dfs其实就是在搜索一棵树,之所以叫深度优先,就是说dfs会优先向下搜索,在搜索完一个结点后,它会优先去搜索这个结点的儿子结点。而bfs在此时则会优先搜索它的兄弟结点,所以我们会说bfs是按层搜索的算法
走迷宫
题目描述
给定一个n*m的二维字符数组,用来表示一个迷宫,数组中只包含’#‘或’.’,其中’.‘表示可以走的路,’#'表示不可通过的墙壁。
最初,有一个人位于起点S处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。
请问,该人从左上角移动至终点T处,至少需要移动多少次。
输入格式
第一行包含两个整数n和m。
接下来n行,每行包含m个字符,表示完整的二维字符数组迷宫。
输出格式
输出一个整数,表示从左上角移动至右下角的最少移动次数。
bfs通常用队列来实现
看题目我们可以得到,当走到点 ‘T’ 的时候就到了终点
所以当前点的横纵坐标与终点 ‘T’ 的坐标相同时,结束bfs
我们只需要每次去遍历这个点可以走的四个方向
判断每个方向是否可以走,并把新的状态入队列即可
char mat[1005][1005];
struct Node{
int x,y,step;
};
int dx[] = {
-1,1,0,0} , dy[] = {
0,0,-1,1};
int vis[1001][

本文介绍了一种使用广度优先搜索(BFS)算法解决迷宫寻路问题的方法,通过C++代码实现,详细解释了如何利用队列进行逐层搜索,寻找从起点到终点的最短路径。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



