栈的应用——深度优先搜索(二)打印出正确路径
这一步实际上就是走到终点后,如何能够打印出正确的一条路。
上一篇走迷宫的博客中已经写明了如何走出迷宫,这次只是对其的升华,如何来输出一个正确的路线?
由于计算机会尝试多条路径都走到底试一遍才能找到最后的终点,所以如何输出正确的路线也不是很简单的事。
【栈的应用——深度优先搜索(二)打印出正确路径】具体代码如下:
mystack.h 和 mystack.cpp 跟走迷宫是一样的,可以翻阅 深度优先搜索(走迷宫)这篇 。
main函数代码如下:
#include
#include"mystack.h"
#include
#define MAXROW 10
#define MAXLINE 10
//宏定义把迷宫 长宽都定义成10
using namespace std;
Stack s;
//变成全局,方便调用Point prePoint[MAXROW][MAXLINE];
//创建一个二维坐标int maze[MAXROW][MAXLINE] =
{
1,1,1,1,1,1,1,1,1,1,
0,0,0,1,1,1,1,1,1,1,
1,1,0,1,1,1,1,1,1,1,
1,1,0,0,0,0,1,1,1,1,
1,1,0,1,1,0,1,1,1,1,
1,1,0,1,0,0,0,1,1,1,
1,1,1,1,1,0,1,1,1,1,
1,1,1,1,1,0,0,0,1,1,
1,1,1,1,1,1,1,0,0,0,
1,1,1,1,1,1,1,1,1,1,
};
void displyMaze()
{
for(int i=0;
i< MAXROW;
i++)
{
for(int j=0;
j=0&&maze[t._x-1][t._y] == 0)
visit(t._x-1,t._y,t);
//这个 t 指的是移动前,自己原来弹出栈的这个点
//下
if(t._x+1<=9&&maze[t._x+1][t._y] == 0)
visit(t._x+1,t._y,t);
//左
if(t._y-1>=0&&maze[t._x][t._y-1] == 0)
visit(t._x,t._y-1,t);
//右
if(t._y+1<=9&&maze[t._x][t._y+1] == 0)
visit(t._x,t._y+1,t);
if(t._x==ep._x&&t._y==ep._y)
{
flag=0;
//给定找到出口的标志位
destroyStack(&s);
break;
}
}
#endif
if(flag==0)
{
cout<<"find path"<
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- Docker应用:容器间通信与Mariadb数据库主从复制