2010-03-09 72 views
0

我正在尋找一種Java內置數據結構,該結構將是處理相鄰房間的最佳選擇。 我有一個網格/地板分爲隨機生成的房間,像這樣:用於映射相鄰房間的Java內置數據結構

+ + + + + + + + + + + + + + + + + + + + 
+       +   + 
+       +   + 
+       +   + 
+       +   + 
+       +   + 
+       +   + 
+       +   + 
+ + + + + + + + + + + + + + + + + + + + 
+   +   +     + 
+   +   +     + 
+   +   +     + 
+   +   +     + 
+   +   +     + 
+ + + + + + + + + + + + + + + + + + + + 
+   +    +    + 
+   +    +    + 
+   +    +    + 
+   +    +    + 
+ + + + + + + + + + + + + + + + + + + + 

,我正在尋找一個數據結構中,這將是最快/最簡單的存儲這個網格,繪製出什麼樣的房間的鄰居是什麼客房。

有沒有人有建議?

感謝

+0

房間是否保證矩形?牆總是與x/y軸對齊? – polygenelubricants 2010-03-09 23:42:40

+0

是的,他們肯定是 – thepandaatemyface 2010-03-10 08:20:18

回答

1

您可以使用圖來表示室爲節點和邊緣的鄰居關係。

您可以用許多不同的方式表示圖形。在這種情況下,由於關係是稀疏的,所以最好使用鄰接列表而不是鄰接矩陣。

在Java中,該圖可以用Map<Room,List<Room>>表示。基本上,它是這樣說的:它是從Room到其鄰近列表Room s的地圖。

另外,如果你喜歡用基本的整數和數組的工作,你可以使用一個鄰接矩陣表示boolean[][] adj,其中adj[i][j] == true當且僅當房i和房間j是鄰居。

2

你只需要存儲:

  1. 每個房間的相對角
  2. 通過室,節點和鄰接的邊緣形成的曲線圖的adjacency graph/matrix