使用乙個棧來儲存符合要求的點,每次根據棧頂的點的k值(1表示上,2表示右,3表示下,4表示左)依次取下乙個點,滿足條件則不斷迴圈;若某乙個點的四面都不行,則進行出棧回溯。當找到這樣一條路徑,也要進行回溯,這樣才能輸出所有的路徑。
//定義結構體
typedef
struct
dian;
dian g[30]
;//實現棧的作用
int top=-1
,k=1
;int mg[6]
[6]=
,//通過0和1來表示迷宮地圖,,
,,};
//出棧和入棧,同時對已經入棧的點進行標記
void
push
(dian a)
dian pop()
//格式化輸出所有可行的路徑
void
output()
printf
("\n");
}
//初始化每乙個點,返回結構體
dian initialdian
(int h,
int l)
//乙個點乙個點的遞迴回溯
void
dealwith
(dian t)
break
;case2:
if(mg[t.m]
[t.n+1]
==0)break
;case3:
if(mg[t.m+1]
[t.n]==0
)break
;case4:
if(mg[t.m]
[t.n-1]
==0)break;}}}}
//主函式
intmain()
執行結果 C語言實現迷宮問題 深度優先搜尋
c語言實現迷宮問題 這裡寫自定義目錄標題 小白一枚,c語言實現迷宮問題,思路為,先將初始點 i,j,di 入棧,進入迴圈,先出棧,之後判斷臨近點 row,col 如果這個點可行,留下標記 在0,1迷宮中用2來標記走過的路,然後將i,j,di入棧 然後更新點座標,找到為止,如下 勿噴,嘻嘻 inclu...
深度優先搜尋DFS(迷宮問題)
問題及 給出迷宮的圖紙和初始終點位置,用dfs求最小步數。include using namespace std int n,m,p,q,min 99999999 int a 51 51 book 51 51 void dfs int x,int y,int step 順時針 右下左上 int tx...
DFS深度優先搜尋 迷宮問題
首先我們用乙個陣列來儲存這個迷宮,用 1 代表障礙物,用 0 代表可通行的路 define n 22 int maze n n 假設我們現在處於 x,y 點 x y 指 maze 陣列的行 列 對於接下來的每一條路徑,我們只能乙個乙個地去嘗試 我們可以先往右走,直到走不通的時候再退回來,然後再去嘗試...