3752 走迷宮 DFS和BFS

2021-10-02 10:25:07 字數 1430 閱讀 9123

我是先用dfs寫的 因為我沒用bfs寫過這種題

後來想了想bfs也得練練 就看了別人的寫了一遍

//第一次接觸這個形式的bfs 有時候感覺用dfs要簡單

//以前做的bfs都是關於圖的

b#include

#include

#include

using

namespace std;

int n, m;

string s[

100]

;int vis[

100]

[100];

//用結構體來搞 以後每一層都是上一層的走的步數加1

struct f

;//比較巧妙的是 上下左右 用了乙個陣列來搞

//一開始我想錯了 想成了和8連通似的

int dir[4]

[2]=

;int

bfs(

int x,

int y)}}

intmain()

cout <<

bfs(0,

0);return0;

}

#include

using

namespace std;

int n, m;

string s[

100]

;int vis[

100]

[100];

int ans =

1<<30;

void

dfs(

int x,

int y,

int js)

//上下左右四個方向

//控制方向有更方便的方法 懶得想了if(

(x -1)

>=

0&& s[x -1]

[y]==

'.')

dfs(x -

1, y, js +1)

;if((x +1)

< n && s[x +1]

[y]==

'.')

dfs(x +

1, y, js +1)

;if((y -1)

>=

0&& s[x]

[y -1]

=='.'

)dfs

(x, y -

1, js +1)

;if((y +1)

< m && s[x]

[y +1]

=='.'

)dfs

(x, y +

1, js +1)

;}intmain()

dfs(0,

0,1)

; cout << ans;

return0;

}

3752 走迷宮 BFS入門題

描述 乙個迷宮由r行c列格仔組成,有的格仔裡有障礙物,不能走 有的格仔是空地,可以走。給定乙個迷宮,求從左上角走到右下角最少需要走多少步 資料保證一定能走到 只能在水平方向或垂直方向走,不能斜著走。輸入 第一行是兩個整數,和 代表迷宮的長和寬。1 r,c 40 接下來是 行,每行 個字元,代表整個迷...

OJ 3752 走迷宮 雙向BFS

描述 乙個迷宮由r行c列格仔組成,有的格仔裡有障礙物,不能走 有的格仔是空地,可以走。給定乙個迷宮,求從左上角走到右下角最少需要走多少步 資料保證一定能走到 只能在水平方向或垂直方向走,不能斜著走。輸入第一行是兩個整數,和 代表迷宮的長和寬。1 r,c 40 接下來是 行,每行 個字元,代表整個迷宮...

簡單BFS 走迷宮

描述 l上次旅行進入了乙個迷宮,他被困在了乙個n m的矩形迷宮中。l開始在左上角的點,他知道出口在右下角,他可以向四個方向移動到相鄰的點。不過這個迷宮有些魔法,每個格仔有一種顏色,不同的顏色代表不一樣的功能 如果格仔是紅色的,表示當前格仔無法通行 如果格仔是粉紅,表示格仔可以正常通行 如果是橙色,當...