问题描述:
迷宫的最短路径
给定一个大小为N*M的迷宫。迷宫由通道和墙壁组成,每一步可以向邻接的上下左右四格的通道移动。请求出从起点到终点所需的最小步数。假定从起点开始一定能够走到终点。
输入:10 10
#.######.#
......#..#
.#.##.##.#
.#........
##.##.####
....#....#
.#######.#
....#.....
.####.###.
....#....#
0 1 9 8
输出:
22
代码:
#include<queue>
#include<cstdio>
#include<iostream>
using namespace std;
const int INF = 100000000;
const int MAX = 10086;
int N, M, sx, sy, gx, gy;//迷宫的行数跟列数,以及开始和结束的坐标
char mg[MAX][MAX];
int arr[MAX][MAX];
int dx[4] = {1, 0, -1, 0}, dy[4] = {0, 1, 0, -1};
typedef pair<int, int> P;
int BFS();
void solve();
int main(){
cin >

本文介绍如何使用宽度优先搜索(BFS)解决寻找迷宫中从起点到终点最短路径的问题。在N*M的迷宫中,通过BFS策略找到从起点到终点的最小步数,确保在有解的情况下一定能找到答案。例如,一个具体的迷宫实例给出了22步的最短路径。
最低0.47元/天 解锁文章
2495

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



