迷宮的簡單實現

2021-08-26 03:04:58 字數 953 閱讀 6448

迷宮

使用乙個二維陣列模擬迷宮,在這裡使用棧結構和回溯的演算法簡單實現迷宮。

給定乙個入口,先將入口座標入棧。再對四個方向進行判斷,是否能走,如果能走將下乙個節點入棧。當無路可走時,出棧節點,回溯到上乙個節點進行上一步判斷。當找到乙個出口時

再回溯到上乙個岔路口,尋找另外通路。

如果將所有節點出棧,則說明迷宮無出口。

//假設該迷宮為帶環並且有多個出口乙個入口

//假設1為迷宮的通路,0不可以走

int m[n][n] =

尋找迷宮的出口

int mazegetpath2(pos entry)    //闖入入口的節點座標,entry為座標的結構體

//探測下乙個位置,上下左右

next = cur;

next.row += 1;

if (mazechecklsaccess(&next))

next = cur;

next.row -= 1;

if (mazechecklsaccess(&next))

next = cur;

next.col -= 1;

if (mazechecklsaccess(&next))

next = cur;

next.col += 1;

if (mazechecklsaccess(&next))

path->top--; //如果走不通回溯到上乙個節點

} //回溯到上乙個節點

if (t1 == 0) //t1為出口個數計數器沒有一條出口

else

return 1; //若有出口返回1

}

結果

實現簡單的迷宮

我們知道棧的特點是 後進先出 first in last out 也就是說只能在棧的尾部進 行壓棧和出棧,而且出棧的時候只能從最後乙個資料開始。所以我們利用棧這個特點,來實現這個迷宮。在這之中我們要採用 回溯 的方法去處理當遇到路徑不通的情況。原理 每找到乙個通路,就將這個資料壓棧,這樣當前位置的上...

簡單的實現迷宮問題

在實現迷宮問題,是對棧這種結構進一步的熟悉和使用。首先,可以定義乙個10 10的二維陣列,0代表通路,1代表牆.再定義乙個座標的結構體。開始走迷宮.開始走迷宮的時候,無非就4個方向,上下左右,判斷哪個方向能走通,那就沿著那條路繼續走,走到 死路 那就返回到第一次分叉的路口,換個方向繼續走.話不多說,...

迷宮程式簡單實現

這個程式是將乙個迷宮的程式列印出來,具體的操作我會在下面的程式中具體的 給出來,其中分為兩乙個小的程式,乙個是這個檔案,另乙個是乙個以head.cpp檔案 為main函式的檔案,好了,程式開始了 include iostream.h include malloc.h define error 0 d...