栈的应用——深度优先搜索(二)打印出正确路径

这一步实际上就是走到终点后,如何能够打印出正确的一条路。
上一篇走迷宫的博客中已经写明了如何走出迷宫,这次只是对其的升华,如何来输出一个正确的路线?
由于计算机会尝试多条路径都走到底试一遍才能找到最后的终点,所以如何输出正确的路线也不是很简单的事。
【栈的应用——深度优先搜索(二)打印出正确路径】具体代码如下:
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"<


    推荐阅读