问题:传送门
关于BFS算法:
宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。
题目分析: 给出一个5*5的迷宫,要求求出最短路并且把它打印出来,最短路径用BFS来解决,再创立一个数组来记录路径
AC代码:
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
int maze[5][5]; //迷宫
typedef pair<int,int> P;
P father[5][5]; //记录某个点的下一个点是什么
bool vis[5][5]; //判断该点是否走过
int dx[4]={1,0,-1,0}, dy[4]={0,1,0,-1}; //用于计算四个方向
void bfs(){
queue<P> que; //创建一个队列
que.push(P(4,4)); //假设从后往前遍历,先把第一个状态加入队列
vis[4][4]=true; //标记走过
while(que.size()){ //如果队列不为空就继续循环
P p=que.front();
que.pop();
if(p.first==0&&p.second==0) break; //如果达到