事實證明,這個問題比我原先想象的要困難得多。我有一個連通房列表。每間客房都設有一扇關閉或打開的門。在任何時候,我都想知道哪些房間通過敞開的門連接在一起,并將它們標記為連接房間組1,連接房間組2等。有一篇關于堆棧溢出的帖子討論了如何生成隨機連接的房間并跟蹤哪些房間已連接。基本上定義一個矩陣/數組。然后,如果已連接房間,則可以使用真值或假值填充數組。因此,如果房間2和4是相連的,那么類似。矩陣如下所示:conn[a][b]conn[2][4] = trueconn[4][2] = true+--------+--------+--------+--------+--------+| Rooms | Room 1 | Room 2 | Room 3 | Room 4 |+--------+--------+--------+--------+--------+| Room 1 | N/A | false | false | false || Room 2 | false | N/A | false | true || Room 3 | false | false | N/A | false || Room 4 | false | true | false | N/A |+--------+--------+--------+--------+--------+更復雜的情況如下(2號房間和3號房間的門緊閉):+----+----+----+| R1 R2 | R3 |+ +----+ +| R5 | | R4 |+----+ +----+矩陣如下所示:+--------+--------+--------+--------+--------+--------+| Rooms | Room 1 | Room 2 | Room 3 | Room 4 | Room 5 |+--------+--------+--------+--------+--------+--------+| Room 1 | N/A | true | false | false | true || Room 2 | true | N/A | false | false | false || Room 3 | false | false | N/A | true | false || Room 4 | false | false | true | N/A | false || Room 5 | true | false | false | false | N/A |+--------+--------+--------+--------+--------+--------+我認為我有一個聰明的想法,通過僅循環遍歷位于N / As上方的單元格并將每行視為不同的“連接房間組”來對連接的房間進行分組:+--------+--------+--------+--------+--------+--------+| Rooms | Room 1 | Room 2 | Room 3 | Room 4 | Room 5 |+--------+--------+--------+--------+--------+--------+| Room 1 | N/A | true | false | false | true || Room 2 | | N/A | false | false | false || Room 3 | | | N/A | true | false || Room 4 | | | | N/A | false |+--------+--------+--------+--------+--------+--------+而實際卷將全部連接,因此應該只有一個Connected Group 1: [1,2,3,4,5]我決定用房間和門來談談我的問題,但我的實際問題略有不同。在高層次上,我正在制作一個分析工具,用戶可以通過在體積之間打開/關閉閥門來隔離體積。該工具需要出于不同的原因將各個體積組合在一起,例如,直觀地指示連接的體積,并對每個分組的體積運行壓力均衡計算。我考慮過的對連接的卷進行分組的每個架構似乎都失敗了。是否有任何出色的堆棧溢出用戶有智能解決方案來分組連接的房間?我傾向于用python編程,但我精通多種語言。隨意從概念上或通過您喜歡的非古老語言回答問題。
1 回答

慕桂英4014372
TA貢獻1871條經驗 獲得超13個贊
添加回答
舉報
0/150
提交
取消