dfs bfs 逃離迷宮

2021-08-21 15:44:47 字數 2045 閱讀 2653

給定乙個m × n (m行, n列)的迷宮,迷宮中有兩個位置,gloria想從迷宮的乙個位置走到另外乙個位置,當然迷宮中有些地方是空地,gloria可以穿越,有些地方是障礙,她必須繞行,從迷宮的乙個位置,只能走到與它相鄰的4個位置中,當然在行走過程中,gloria不能走到迷宮外面去。令人頭痛的是,gloria是個沒什麼方向感的人,因此,她在行走過程中,不能轉太多彎了,否則她會暈倒的。我們假定給定的兩個位置都是空地,初始時,gloria所面向的方向未定,她可以選擇4個方向的任何乙個出發,而不算成一次轉彎。gloria能從乙個位置走到另外乙個位置嗎?

input

第1行為乙個整數t (1 ≤ t ≤ 100),表示測試資料的個數,接下來為t組測試資料,每組測試資料中, 

第1行為兩個整數m, n (1 ≤ m, n ≤ 100),分別表示迷宮的行數和列數,接下來m行,每行包括n個字元,其中字元'.'表示該位置為空地,字元'*'表示該位置為障礙,輸入資料中只有這兩種字元,每組測試資料的最後一行為5個整數k, x 1, y 1, x 2, y 2 (1 ≤ k ≤ 10, 1 ≤ x1, x 2 ≤ n, 1 ≤ y 1, y 2 ≤ m),其中k表示gloria最多能轉的彎數,(x 1, y 1), (x 2, y2)表示兩個位置,其中x 1,x 2對應列,y 1, y 2對應行。 

output

每組測試資料對應為一行,若gloria能從乙個位置走到另外乙個位置,輸出「yes」,否則輸出「no」。

sample input

2

5 5...**

*.**.

.....

.....

*....

1 1 1 1 3

5 5...**

*.**.

.....

.....

*....

2 1 1 1 3

sample output

no

yes

#include#include#include#includeusing namespace std;

char maze[101][101];//地圖面積

int vis[105][105]; //標記是否已經訪問

int n,m; //分別代表行數和列數

int k,x1,y1,x2,y2;//最大轉彎次數,起點,終點

int t;//代表有多少組

int dir[4][2]=,,,}; //所有方向

int flag; //標記是否完成

struct node;

void bfs()

for(int i = 0;i<4;i++)

bri.x = next.x + dir[i][0];

bri.y = next.y + dir[i][1];

next = bri;

}} }

//return;

}int main(),,,,}; //所有方向

int count; //記錄轉彎次數

int maxcount; //最大能轉彎的次數

int x1,y1,x2,y2; //代表起點終點的座標

char maze[100][101]; //地圖

int flag; //標記是否已經完成

void dfs(int x,int y)

for(int i=1;i<5;i++)

}} int main()

scanf("%d%d%d%d%d",&maxcount,&x1,&y1,&x2,&y2);

//x1,x2對應列,y1,y2對應行

//因為它座標第一行是1,在電腦裡是0

x1-=1;y1-=1;x2-=1;y2-=1;

dfs(x1,y1);

if(flag)

printf("yes\n");

else

printf("no\n");

} return 0;

}

迷宮問題 dfs bfs

從迷宮入口點 1,1 出發,出口點 m,n 1.求所有路徑條數 2.求最短路徑條數 3.輸出一條最短路徑 題解 向四周搜尋,記下所有一步能到達的座標點 然後依次再從這些點出發,再記下所有一步能到達的座標點,依此類推,直到到達迷宮的出口點 m,n 為止,然後從出口點沿搜尋路徑回溯直至入口。這樣就找到了...

簡單迷宮(DFS BFS)

ps 不得不說自己太菜了,dfs和bfs的模板題都搞了好幾個小時 有乙個 10 x 10 的迷宮,起點是 s 終點是 e 牆是 道路是空格。乙個機械人從起點走到終點。當機械人走到乙個通道塊,前面已經沒有路可走時,它會轉向到當前面向的右手方向繼續走。如果機械人能夠過,則留下足跡 如果走不通,則留下標記...

dfs bfs迷宮集合

師兄在藍橋杯培訓的時候講過dfs,但是但是後來又忘了,然後又做,現在又忘 希望師兄不要打我 問題描述 學霸搶走了大家的作業,班長為了幫同學們找回作業,決定去找學霸決鬥。但學霸為了不要別人打擾,住在乙個城堡裡,城堡外面是乙個二維的格仔迷宮,要進城堡必須得先通過迷宮。因為班長還有妹子要陪,磨刀不誤砍柴功...