BFS:迷宫的最短路径

本文介绍了宽度优先搜索(BFS)算法在解决迷宫中寻找从起点到终点最短路径的应用。在宽度优先搜索中,算法优先处理距离初始状态更近的状态,并确保每个状态只被访问一次。给定一个N*M的迷宫,每一步可以向相邻的四个方向移动,BFS能够求出从起点到终点的最小步数。文章包含具体的问题重述和相关代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

宽度优先搜索思想:

宽度优先搜索总是先搜索目前距离初始状态最近的状态。对于同一个状态,宽度优先搜索只经过一次

问题重述:

给定一个大小为N*M的迷宫。迷宫由通道和墙壁组成,每一步都可以向相邻的上下左右四格的通道移动。请求出从起点到终点所需的最小步数。请注意,本题假定从起点一定可以移动到终点。

代码:

<span style="font-size:18px;">#include<cstdio>
#include<queue>
#include<utility>
#define MAX_N 128
#define MAX_M 128 
const int INF=100000000;
typedef pair<int,int> P;
int maze[MAX_N][MAX_M];
int N,M;
int sx,sy;		//起点坐标 
int gx,gy;		//终点坐标
int d[MAX_N][MAX_M];
int dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};
//求从(sx,sy)到(gx,gy)的最短距离,如果无法到达,则是INF; 
int bfs()
{
	qu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值