(C++)POJ-3984——走迷宫(广度优先算法)

该博客介绍了一个使用C++通过广度优先搜索(BFS)算法解决POJ-3984问题的方法。题目要求找出5x5矩阵中,从左上角到右下角的唯一可行且最短路径。博主提供了详细的题目描述、输入输出格式说明,并讲解了利用BFS保存路径并反向输出的策略。博客附带了可AC(Accepted)的源代码实现。

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

题目描述

地图显示,法阵是方形的,纵横皆为五里,在地图上简示为5*5的矩阵,且只由0或1组成。其中,0表示可以走的路,1表示阻止通行的屏障。左上角和右下角分别是阵的入口和出口,这两个位置的数字保证为0。
既然得到了地图,破解法阵自然不再是难事。现在,小胖不仅想要走出法阵,还想知道怎样才能用最短的路线走出法阵。

input

输入是一个5 × 5的二维数组,仅由0、1两数字组成,表示法阵地图。

output

输出若干行,表示从左上角到右下角的最短路径依次经过的坐标,格式如样例所示。数据保证有唯一解。

题目讲解

很明显,这道题需要使用到广度优先搜索(BFS)来找到一条最短路径,唯一需要注意的一点是题目要求输出这条路径,而不是这条路径的长度,所以我们可以采用一个结构体数组 parent[N][N] 来保存所走路径中每一个点的前一个点。
这样的话,如果我们按题目来从起点到终点,那么要输出路径的则需要反向输出,所以为了方便起见,我们从终点开始搜索,搜索到起点,这样我们就可以直接得到正确的路径

源代码(可AC)

#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
int g[7][7];
int visit[7][7];
struct Point
{
   
   
    int x;
    int y;
    Point(){
   
   };//无参数的构造函数
    Point(int _x,int _y):x(_x),y(_y){
   
   };//函数参数的构造函数
};
Point parent[7][7];
bool bfs(Point &pb,Point &pe)
{
   
   
    queue<Point> que
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值