如何使用二进制矩阵表示生成迷宫?

时间:2015-11-28 15:36:34

标签: matrix binary depth-first-search maze

我想使用二进制矩阵生成迷宫 当0表示空单元格时 和一面墙

我尝试使用DFS算法,问题是DFS指的是它们之间的单元格和墙壁(每个单元格最多有四个墙壁)

"然后选择尚未访问的随机相邻小区。电脑拆除了墙壁。两个细胞之间和..."

我不理解与我被要求实施的陈述类比

任何人都有任何想法?

2 个答案:

答案 0 :(得分:1)

当被要求制作网格时,我首先制作一个多维数组。 让外部数组包含网格的每一行,每个嵌套数组都是列。 根据每个单元是否需要记住被访问,数组的每个插槽都可以包含一个简单的类或结构(取决于您选择的语言)。否则,它们可以简单地包含int或bool。

一个简单的例子可能是:



var grid = [
              [1, 1, 1],
              [1, 0, 1],
              [1, 1, 1]
           ];




在中间代表一个空的单元格,被墙壁包围。

答案 1 :(得分:0)

我们的想法是构建一个单元格模式,然后在它们之间构建墙,但不是在它有DFS树边缘时。

示例DFS运行(2D情况,删除边缘,可以从节点的顺序推断):

 O

 O
 O

 O
OO

OO
OO
(this branch is stuck so start a new one)
OOO
OO
...
OOO
OOO
OOO

现在构建迷宫:

OXSOO
OXOXO
OOOXO
XXXXO
EOOOO

O -> cell
X -> wall
S -> start
E -> end

墙可以是块也可以是平面,拓扑结构相同。