簡體   English   中英

脫節集和迷宮創建

[英]Disjoint set and maze creation

我正在嘗試使用預制的不相交集合類創建迷宮。 我創建了一個Cell類,其中包含四個壁中每個壁的布爾變量。 問題是,如何創建不相交的單元格對象集? 這樣,我可以合並單元格並相應地更改布爾變量。

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

那是不相交集的代碼

不相交的集合數據結構不適合此特定問題。

試圖強迫您的解決方案使用它只會給您糟糕的代碼和糟糕的設計。

更不用說有一個更簡單,更優雅的解決方案。

為了生成一個完美的(任意兩點之間的唯一路徑)迷宮:

  1. 創建一個由N個單元格組成的N個數組,跟蹤每個單元格中的每個牆
  2. 隨機選擇一個單元
  3. 從您當前的單元格(A)中選擇一個未訪問的鄰居(B),如果沒有這樣的鄰居,請返回您以前訪問的單元格,然后從步驟(3)開始
  4. 打破A和B之間的牆
  5. 將B標記為當前單元格(或將其推送到列表或類似的數據結構中)
  6. 如果已經訪問了所有單元,則結束。 否則回到步驟(3)

您只需要一個網格和一個列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM