一樣的迷宮,這次要求不是求有多少條出去的路,而是求最短出去的路,使用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...