OJ 3752 走迷宮 雙向BFS

2021-10-05 17:39:01 字數 962 閱讀 6192

描述

乙個迷宮由r行c列格仔組成,有的格仔裡有障礙物,不能走;有的格仔是空地,可以走。

給定乙個迷宮,求從左上角走到右下角最少需要走多少步(資料保證一定能走到)。只能在水平方向或垂直方向走,不能斜著走。

輸入第一行是兩個整數,r和c,代表迷宮的長和寬。( 1<= r,c <= 40)

接下來是r行,每行c個字元,代表整個迷宮。

空地格仔用』.『表示,有障礙物的格仔用』#『表示。

迷宮左上角和右下角都是』.』。

輸出輸出從左上角走到右下角至少要經過多少步(即至少要經過多少個空地格仔)。計算步數要包括起點和終點。

樣例輸入

5 5

..###

#....

#.#.#

#.#.#

#.#..

樣例輸出

9
#include

#include

#define p pair

using

namespace std;

//記錄下當前狀態, 從前往後搜尋值為1,從後往前搜尋值為2,如果某狀態下,當前節點和準備擴充套件節點的狀態相加為3,說明相遇

queue q1, q2;

int r, c, ans;

int dis[45]

[45];

//最短路徑

int vst[45]

[45];

int dx[4]

=;int dy[4]

=;char m[45]

[45];

void

dbfs()

else

for(

int i =

0; i <

4; i++

)else}}

}}intmain()

3752 走迷宮 BFS入門題

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

3752 走迷宮 DFS和BFS

我是先用dfs寫的 因為我沒用bfs寫過這種題 後來想了想bfs也得練練 就看了別人的寫了一遍 第一次接觸這個形式的bfs 有時候感覺用dfs要簡單 以前做的bfs都是關於圖的 b include include include using namespace std int n,m string ...

小公尺 oj 馬走日 (bfs 或 雙向bfs)

序號 56難度 困難時間限制 1500ms記憶體限制 10m 描述在中國象棋中,馬只能走日字型。現在給出乙個由 n m 個格仔組成的中國象棋棋盤 有 n 1 m 1 個交叉點可以落子 以及棋盤上的兩個座標點 s,t。請計算出從 s 到 t 使用日字型走法所需的最少步數,如果不能到達,則輸出 1。下圖...