迷宫
用二维数组来表示迷宫:
1)0表示可走的格子。
2)1表示墙。
初始化二维数组:
mazeMap := [10][10]int{
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 0, 0, 1, 0, 0, 0, 1, 0, 1},
{1, 0, 0, 1, 0, 0, 0, 1, 0, 1},
{1, 0, 0, 0, 0, 1, 1, 0, 0, 1},
{1, 0, 1, 1, 1, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 1, 0, 0, 0, 0, 1},
{1, 0, 1, 0, 0, 0, 1, 0, 0, 1},
{1, 0, 1, 1, 1, 0, 1, 1, 0, 1},
{1, 1, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
}
根据二维数组绘制出来的迷宫:
算法思路
用顺序栈来保存走迷宫的路径,保存可行路径每一步的坐标。
假设起点坐标(1,1)可以走,那么把起点路标压入栈。
然后从起点位置按照上、右、下、左的顺序,访问相邻的格子。
遇到可以走的格子,则把格子的坐标压入栈,如图所示: