深度搜尋迷宮問題 C語言實現

2021-10-06 03:28:45 字數 1170 閱讀 9601

使用乙個棧來儲存符合要求的點,每次根據棧頂的點的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 陣列的行 列 對於接下來的每一條路徑,我們只能乙個乙個地去嘗試 我們可以先往右走,直到走不通的時候再退回來,然後再去嘗試...