前言
bfs算法具有找最短路径的特点,自然会出现复现路径的问题,
本文以简单的走迷宫问题来讲述如何将路径记录以及再复现输出。
举一反三哈(希望还是熟练bfs开图再来看,主要讲标记)
下面上代码
-
快速了解 地图 请移步72行,尾部79有示例,此为 固定大小 以及 固定起点终点
-
我采用反向链式找坐标 (说人话就是开一个数组存上一个位置),请移步至56行,这是重点,ans的两个坐标分别是一个点的x,y坐标,对应的两个结构体数值为上一个坐标的x,y坐标。
-
打印函数请移步16行,采用递归(25行)用ans的链找到上一个坐标,一直找到开头,输出起点坐标后,继而输出下一步坐标,应该读者都能熟练理解递归了叭 (逃
以下是一些小细节
- 若想更改图的大小以及输出,记得改18行的终点
- 34行中的赋值为-1意味着追溯不到上一个坐标了,其实什么值都行了,因为在递归输出中见到终点的坐标就停止了,并不会用到起点的链的位置,但是别和递归终点搞混 哈
#include<cstdio>
#include<queue>
using namespace std;
struct node
{
int x,y;
}ans[6][6];
int m[6][6];
int flag[6][6];
int dec[4][2]={
1,0,0,1,-1,0,0,-1};
queue<node> q;<