错位设置和迷宫创建



我正试图使用预制的Disjoint集合类创建一个迷宫。我创建了一个Cell类,它为四面墙中的每一面墙都包含一个布尔变量。问题是,如何创建一组不相交的单元对象?通过这种方式,我可以合并单元格并相应地更改布尔变量。

http://users.cis.fiu.edu/~weiss/dsaajava3/code/DisjSets.java

这是不相交集的代码

不相交的集合数据结构不适合这个特定的问题。

试图强迫您的解决方案使用它只会给您带来糟糕的代码和糟糕的设计。

更不用说还有一个更简单、更优雅的解决方案。

为了生成一个完美的(任意两点之间的唯一路径)迷宫:

  1. 创建一个N乘M单元的阵列,跟踪每个单元中的每个壁
  2. 随机选择一个单元格
  3. 从您当前的小区(A)中,选择一个未访问的邻居(B),如果没有这样的邻居,则返回到您以前访问过的小区并从步骤(3)开始
  4. 打破A和B之间的墙
  5. 将B标记为当前单元格(或将其推送到列表或类似的数据结构中)
  6. 如果已访问了所有单元格,则结束。否则返回步骤(3)

你所需要的只是一个网格和一个列表。

最新更新