求迷宮從入口到出口的所有路徑是一個經(jīng)典的程序設計問題,求解迷宮,通常采用的是“窮舉+回溯”的思想,即從入口開始,順著某一個方向出發(fā),若能夠走通,就繼續(xù)往前走;若不能走通,則退回原路,換一個方向繼續(xù)向前探索,直到所有的通路都探尋為止。因此本文依據(jù)這種“窮舉+回溯”的思想,設計一個求解迷宮的程序。
1 問題分析
為了保證在任何位置上都能夠退回原路,顯然需要使用一個先進后出的數(shù)據(jù)結構來保存已經(jīng)探尋過的位置,因此在程序求解迷宮路徑的過程中采用棧
這種數(shù)據(jù)結構。
迷宮是一個二維地圖,其中含有出口和入口,障礙點和通道,因此程序采用一個二位數(shù)組map來表示,其中,二維數(shù)組值所代表的含義如下:
0:通道 1:起點 2:障礙 3:終點 4:路徑
需要注意的是,最后求解出來的通路,必須要是一條簡單路徑,即在求得的路徑上不能重復出現(xiàn)同一通道快。下面簡述一下程序的求解過程。