0

我正在尝试使用预制的不相交集类创建迷宫。我创建了一个 Cell 类,其中包含四个墙壁中的每一个的布尔变量。问题是,如何创建一组不相交的单元格对象?这样我就可以合并单元格并相应地更改布尔变量。

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

那是不相交集的代码

4

1 回答 1

0

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

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

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

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

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

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

于 2019-09-03T10:38:56.703 回答