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