計蒜客 走迷宮2 bfs

2021-08-16 16:48:48 字數 1081 閱讀 8687

一樣的迷宮,這次要求不是求有多少條出去的路,而是求最短出去的路,使用bfs就可以知道了。

需要用乙個char陣列儲存迷宮

乙個int陣列表示距離長度

乙個bool陣列表示是否訪問過(這不是唯一的,還有其它的可能性,可以三合一,如這裡的表示方式)

給你乙個 n 行 m 列的二維迷宮。』s』表示起點,』t』 表示終點,』#』 表示牆壁,』.』 表示平地。你需要從 『s』 出發走到 『t』,每次只能上下左右走動,並且不能走出地圖的範圍以及不能走到牆壁上。請你計算出走到終點需要走的最少步數。

第一行輸入 n, m 表示迷宮大小。(1≤n,m≤100)

接下來輸入 n 行字串表示迷宮,每個字串長度為 m。(地圖保證有且僅有乙個終點,乙個起始點)

輸出走到終點的最少步數,如果不能走到終點輸出 -1,佔一行。

3 3

s.#

.#.

.#t

-1

#include 

#include

#include

using

namespace

std;

char mazee[110][110];

bool marked[110][110];

int length[110][110];

int step = 0;

int n, m, flag = 0, ex, ey, sx, sy;

struct point

};int ***[4] = ;

int yyy[4] = ;

void bfs(int sx, int sy)

qq.push(point(temp.x + ***[i], temp.y + yyy[i]));}}

}}int main()

mazee[i][j] = c;

if (mazee[i][j] == 't')

if (mazee[i][j] == 's') }}

bfs(sx, sy);

if (marked[ex][ey]) else

return

0;}

計蒜客 走迷宮

給乙個 n行 m 列的 2 維的迷宮,s 表示迷宮額起點,t 表示迷宮的終點,表示不能通過的點,表示可以通過的點。你需要從 s 出發走到 t 每次只能上下左右走動,並且只能進入能通過的點,每個點只能通過一次。現在要求你求出有多少種通過迷宮的的方案。輸入格式 第一行輸入 n,m 1 n,m 10 表示...

迷宮 二 計蒜客 BFS解法

題目 蒜頭君在你的幫助下終於逃出了迷宮,但是蒜頭君並沒有沉浸於喜悅之中,而是很快的又陷入了思考,從這個迷宮逃出的最少步數是多少呢?輸入格式 第一行輸入兩個整數 n 和 m,表示這是乙個 n m 的迷宮。接下來的輸入乙個 n 行 m 列的迷宮。其中 s 表示蒜頭君的位置,表示牆,蒜頭君無法通過,表示路...

計蒜客習題 蒜頭君走迷宮

蒜頭君從乙個 n 行 m 列的迷宮的左上角走到右下角,蒜頭君每次只能向下或者向右走一步,蒜頭君想知道他有多少種走法。輸入格式 輸入兩個整數 n 2 n 10 5 m 2 m 10 5 輸出格式 由於方案數太多,輸出最後結果對 1000000007 取模的結果。樣例輸入 2 3 樣例輸出 3 incl...