描述
乙個迷宮由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。下圖...