问题:假设下图1是某迷宫问题求解的地图(0代表路径1代表墙壁),问此迷宫问题求解是否有条通路
用栈来实现解决问题,主要步骤是
(1)将迷宫问题求解的入口坐标設为当前坐标
(2)将当前坐标压栈将当前坐标上的值设为2(0变为2),代表已走过的路
(3)判断当前坐标的四周(上下左右)是否是可以通(为0则通)的,如果是通的那就将它的坐标设为当前坐标
(4)重复(2)(3)的操作
(5)若遇到如图1中标注的坐标,四周都不可以通(四周都不为0)那么就回退(将栈中的坐标弹出),将栈顶坐标设为当前坐标重复步骤(3)
(6)当退回到两路的相交处则当前周围有路可鉯通,重复步骤(2)(3)
(7)只要判断当前位置在迷宫问题求解地图的边缘(只有边界值为0时当前位置才可以到达边界),那么就可以判断该迷宫问题求解是否可以通
栈中的元素是迷宫问题求解通路的路线若栈为空,则迷宫问题求解没有通路
//若不可以通那么就判断令一個方向的位置的值 cur = path.top();//当四周都不可以通则回退将当前位置置为栈顶元素的坐标位置当迷宫问题求解有出口,则运行结果如图:返回1
当迷宫問题求解没有出口时运行结果如下图:返回1