迷宮問題(BFS)

2021-10-11 13:08:24 字數 1707 閱讀 2652

題目描述

小明置身於乙個迷宮,請你幫小明找出從起點到終點的最短路程。

小明只能向上下左右四個方向移動。

輸入輸入包含多組測試資料。輸入的第一行是乙個整數t,表示有t組測試資料。

每組輸入的第一行是兩個整數n和m(1<=n,m<=100)。

接下來n行,每行輸入m個字元,每個字元表示迷宮中的乙個小方格。

字元的含義如下:

『s』:起點

『e』:終點

『-』:空地,可以通過

『#』:障礙,無法通過

輸入資料保證有且僅有乙個起點和終點。

輸出對於每組輸入,輸出從起點到終點的最短路程,如果不存在從起點到終點的路,則輸出-1。

樣例輸入

155

s-###

----

-##--

-e#-----

-##

樣例輸出

9
#include

using

namespace std;

typedef pair<

int,

int> pii;

#define x first

#define y second

char a[

110]

[110];

int b[

110]

[110];

int m,n;

int c[4]

[2]=

,,,}

;void

bfs(

int s,

int e));

while

(q.size()

));}

}}}int

main()

if(a[i]

[j]==

'e')}}

bfs(starx,stary);if

(b[endx]

[endy]==-

1)cout<<

"-1"

cout<[endy]

<}return0;

}

#include

using

namespace std;

typedef pair<

int,

int> pii;

#define x first

#define y second

int starx,stary,endx,endy;

char a[

110]

[110];

int b[

110]

[110];

int m,n;

int c[4]

[2]=

,,,}

;int

bfs(

int s,

int e));

while

(q.size()

));}

}}return-1

;}intmain()

if(a[i]

[j]==

'e')}}

bfs(starx,stary)

; cout<[endy]

<}return0;

}

迷宮問題bfs

迷宮問題 採用佇列的廣度優先遍歷 bfs 思想是從乙個頂點v0開始,輻射狀地優先遍歷其周圍較廣的區域 找到的解為最優解 include define m 8 define n 8 define maxsize 1000 typedef struct box typedef struct qutype...

迷宮問題BFS

the code 資料結構迷宮.cpp 定義控制台應用程式的入口點。include stdafx.h include include include include define n 4 定義迷宮為4 4 using namespace std struct pot 為記錄路徑的rec準備,座標 x...

迷宮問題bfs

小明置身於乙個迷宮,請你幫小明找出從起點到終點的最短路程。小明只能向上下左右四個方向移動。輸入包含多組測試資料。輸入的第一行是乙個整數t,表示有t組測試資料。每組輸入的第一行是兩個整數n和m 1 n,m 100 接下來n行,每行輸入m個字元,每個字元表示迷宮中的乙個小方格。字元的含義如下 s 起點 ...