美國某知名大學計算機博士家庭作業。。。
阿新 • • 發佈:2019-01-24
一個迷宮是由N(無限制,你可以取任何值,比如20,50,90,1000等)多個房間組成,每兩個相鄰的房間之間有可能會有一條通道。這個通道有個神奇的特性,那就是當一個人從一個房間經過某條通道進入到另一個房間後,他身後那條通道會立即消失,同時其他三個方向上可能會出現新的通道,當然也可能沒有新通道出現,那就證明這是個死衚衕,走不通,但此時你已經退不回去了,說的粗俗點就是“你掛了”。
現在讓你編一個程式,在一個給定的迷宮裡面找到所有潛在可能的逃生路徑,並將他們打印出來。注意:有可能會有環路哦!
要求:
1、程式儘可能簡練,演算法的時間和空間複雜度沒有強制要求,但要合情理。假如,你的程式處理1000個房間時,用了20多秒,那肯定是不合格的。
2、將所有逃生路徑全部輸出,但不要重複輸出相同的路徑。
3、程式必須能夠正確處理可能存在的環路情況。
例如:
這個示例中有環路,編號為0的房間為出口處。
如果從房間號為127的格子出發,那麼存在兩條逃生路徑。因此,你的程式應該輸出像下面這樣的結果:
starting in room 127
path found
in 127 go south
in 17 go south
in 8 go south
in 12 go west
in 25 go west
outside
path found
in 127 go south
in 17 go west
in 93 go south
in 25 go west
outside
僅供大家交流分享。