简单的介绍
那么,这样该如何生成迷宫呢?
不知大家注意到了没有,这种算法每一个步骤都要执行一个操作,把刚刚访问过的点的相邻的并且没有标记为被访问过的点压入Stack s中,然后下一步访问的就是Stack中的第一个元素。那么,当一个点有多个相邻点的话,该按什么顺序压入呢?随机。这就是随机生成迷宫的核心所在!
现在我们换个角度看待问题。
例如需要生成一个5 * 5的迷宫。坐标为(1,1) (3,1) (1,3) (3,3)的①、②、③、④分别代表节点,它们肯定可让人通过,然后,如果(2,1)设置成可通过,就代表①?②可通过,结合图的遍历算法,我们看到,当我们从①访问到②时,就把(2,1)设置为可通过,就相当开辟了一条道路,等到遍历结束,迷宫就生成了。
上图中的①②③④,我们可看为一个2 * 2的矩阵,如图:
关键是在什么时候“开辟这条道路”。以上节中图的深度优先遍历简介为例子。假设依次访问到的点是:1 2 3 4 7 10 9 8 6 5