求迷宮從入口到出口的所有路徑是一個經(jīng)典的程序設(shè)計問題,求解迷宮,通常采用的是“窮舉+回溯”的思想,即從入口開始,順著某一個方向出發(fā),若能夠走通,就繼續(xù)往前走;若不能走通,則退回原路,換一個方向繼續(xù)向前探索,直到所有的通路都探尋為止。因此本文依據(jù)這種“窮舉+回溯”的思想,設(shè)計一個求解迷宮的程序。
1 問題分析
為了保證在任何位置上都能夠退回原路,顯然需要使用一個先進后出的數(shù)據(jù)結(jié)構(gòu)來保存已經(jīng)探尋過的位置,因此在程序求解迷宮路徑的過程中采用棧
這種數(shù)據(jù)結(jié)構(gòu)。
迷宮是一個二維地圖,其中含有出口和入口,障礙點和通道,因此程序采用一個二位數(shù)組map來表示,其中,二維數(shù)組值所代表的含義如下:
0:通道 1:起點 2:障礙 3:終點 4:路徑
需要注意的是,最后求解出來的通路,必須要是一條簡單路徑,即在求得的路徑上不能重復(fù)出現(xiàn)同一通道快。下面簡述一下程序的求解過程。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26