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