最近我遇到了一個問題,說:
假定迷宮具有字符*
,.
,C
。 *
代表牆壁,.
/C
被允許。只有一個點標記爲C
。現在給定一個殭屍站在任何允許點上,存在一系列命令(例如LDDRU
或LLLRRDU
等),使得如果殭屍程序從任何允許點開始,它至少通過C
一次。
如:從所有起點解決迷宮
******
*.C..*
**.***
*....*
******
命令:RLLURUU
現在我知道如何解決使用DFS/BFS迷宮(最短路徑)。但任何人都可以提供一個關於如何處理這樣的問題的暗示嗎?
編輯:如果下一步是進入牆壁/外部迷宮,它將被忽略。和往常一樣L
是左R
是正確U
IS UP D
是關閉。
最遠可以水平移動3步;例如; LLL,你只能在網格中的三個位置;在接下來的R之後,你可以在垂直走廊的三個位置;在UU之後,你肯定已經通過了C,所以一般來說:做出一些減少你可能位置的數量的動作,然後跟蹤你所有可能的機器人,並使每個動作通過C,通過使用「如果有牆,機器人不動」的規則。每當兩個可能的機器人結束在同一個方格中時,移除其中一個。 – m69
@ m69,謝謝你的回答。但更清楚的是,你可以使用給出的例子,並解釋你的邏輯到達答案....謝謝! – yobro97
3行中有9個可能的位置;在LLL之後,任何機器人將位於其最左邊的位置,所以現在只有3個可能的位置;在另一個R之後,這3個機器人將位於第二左邊位置(垂直走廊);在UU之後,它們都會在C上結束。 – m69