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

2021-10-10 02:36:33 字數 1588 閱讀 5562

c語言實現迷宮問題](這裡寫自定義目錄標題)

小白一枚,c語言實現迷宮問題,思路為,先將初始點(i,j, di)入棧,進入迴圈,先出棧,之後判斷臨近點(row,col),如果這個點可行,留下標記(在0,1迷宮中用2來標記走過的路,然後將i,j,di入棧),然後更新點座標,找到為止,**如下(勿噴,嘻嘻)

#include

#include

#define stack_init_size 1000

typedef

struct

box;

typedef

struct

sqstack;

void

mazepath

(int a[

10], box start, box end,sqstack *s)

;void

move

(int i,

int j,

int di,

int*row,

int* col)

;int

initstack

(sqstack* s)

void

push

(sqstack* s, box e)

else

}void

pop(sqstack* s,box *e)

else

}void

move

(int i,

int j,

int di,

int* row,

int* col)

if(di ==1)

if(di ==2)

if(di ==3)

}void

mazepath

(int a[

10], box start, box end,sqstack *s)

di++;}

if(i == end.x && j == end.y)

}while

(s->top >= s->base);}

intmain()

,,,,

,,,,

,}; box start,end;

int i,j;

int flag;

flag =

initstack

(&s);if

(flag ==0)

exit(1

);start.x =1;

start.y =1;

start.di =0;

end.x =8;

end.y =8;

end.di =0;

mazepath

(a, start, end,

&s);

printf

("迷宮現在情況為\n");

for(i =

0;i <

10; i++

)printf

("\n");

}printf

("行走的路徑為\n");

dowhile

(s.base <= s.top)

;return0;

}

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

使用乙個棧來儲存符合要求的點,每次根據棧頂的點的k值 1表示上,2表示右,3表示下,4表示左 依次取下乙個點,滿足條件則不斷迴圈 若某乙個點的四面都不行,則進行出棧回溯。當找到這樣一條路徑,也要進行回溯,這樣才能輸出所有的路徑。定義結構體 typedef struct dian dian g 30 ...

深度優先搜尋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 陣列的行 列 對於接下來的每一條路徑,我們只能乙個乙個地去嘗試 我們可以先往右走,直到走不通的時候再退回來,然後再去嘗試...