小夥用C語言回溯演算法解決迷宮問題!在程式設計上有不可思議的天賦!
迷宮問題是一道經典的回溯演算法問題,給定一個迷宮矩陣,矩陣中的1表示障礙,0表示可走通路,給定迷宮入口出口,要求尋找從入口穿過迷宮到達出口的所有路徑,有則輸出,無則給出提示。一本合格的資料結構教科書一般都會介紹迷宮問題,網上的分析也是鋪天蓋地,這裡就不再贅述重複的內容了。廢話不多說,簡單介紹一下程式,然後上程式碼。

image
想要原始碼+C語言學習資料的可以加小編C語言/C++學習群:825414254即可免費獲取!

image
該程式用二維陣列表示迷宮,用另一個二維陣列記錄迷宮中的位置是否已經走過,同時用一個鏈式棧存放搜尋出的臨時路徑。程式從迷宮入口開始試探,隨著回溯試探過程的進行,鏈式棧的長度不斷變化,當試探到迷宮出口時,連結串列中存放的就是一條完整的穿過迷宮的路徑了,輸出路徑後回溯,繼續試探下一條路徑,當回溯到入口時沒有新的可走方向時整個回溯試探的過程也就結束了。連結串列節點中除了存放被路徑連線的各單元的行列標外,還存放有由該節點代表的單元前往該節點的後繼節點代表的單元的方向,這麼做是為了方便回溯操作的進行。

image
為方便起見,程式中迷宮的入口是固定的,為左上角單元,出口同樣固定,為右下角單元。這並不妨礙程式的普適性,只要稍加修改就可以使程式適用於任意給定的出口和入口的情形。
囉嗦了這麼半天,下面該上程式碼了,程式碼用C語言編寫,具體如下。

image

image

image

image

image

image

image

image

image

image

image