problem description
洪尼瑪今天準備去尋寶,在乙個n*n (n行, n列)的迷宮中,存在著乙個入口、一些牆壁以及乙個寶藏。由於迷宮是四連通的,即在迷宮中的乙個位置,只能走到與它直接相鄰的其他四個位置(上、下、左、右)。現洪尼瑪在迷宮的入口處,問他最少需要走幾步才能拿到寶藏?若永遠無法拿到寶藏,則輸出-1。
input
多組測試資料。
每組資料輸入第一行為正整數n,表示迷宮大小。
接下來n行,每行包括n個字元,其中字元』.『表示該位置為空地,字元』#'表示該位置為牆壁,字元』s』表示該位置為入口,字元』e』表示該位置為寶藏,輸入資料中只有這四種字元,並且』s』和』e』僅出現一次。
output
輸出拿到寶藏最少需要走的步數,若永遠無法拿到寶藏,則輸出-1。
sample input
5s.#…
#.#.#
#.#.#
#…e#…
#include
#include
#include
#include
using
namespace std;
const
int max =
1000
;char maza[max]
[max]
;//記錄迷宮
int step[max]
[max]
;//記錄步數
int sx,sy,ex,ey;
//記錄起點和終點
struct point
point1,point2;
//記錄當前位置和下一位置
int dir[4]
[2]=
,,,}
;//上下左右四個方向
queue q;
//佇列
intmain()
step[sx]
[sy]=1
;//設起點為1表示已經被訪問過
point1.x=sx;
point1.y=sy;
q.push
(point1)
;//把起點新增到佇列
while
(!q.
empty()
)//當佇列不為空時進行迴圈查詢佇列}if
(step[ex]
[ey]!=0
)}if(flag)
cout<[ey]-1
/因為起點為1,故需減去1則為步數
else
cout<<-1
<}return0;
}
FZU 2285 迷宮尋寶
problem 2285 迷宮尋寶 洪尼瑪今天準備去尋寶,在乙個n n n行,n列 的迷宮中,存在著乙個入口 一些牆壁以及乙個寶藏。由於迷宮是四連通的,即在迷宮中的乙個位置,只能走到與它直接相鄰的其他四個位置 上 下 左 右 現洪尼瑪在迷宮的入口處,問他最少需要走幾步才能拿到寶藏?若永遠無法拿到寶藏...
FZU 2285 迷宮尋寶 BFS最短路徑問題
題目 problem 2285 迷宮尋寶 accept 276 submit 1040 time limit 1000 msec memory limit 32768 kb problem description 洪尼瑪今天準備去尋寶,在乙個n n n行,n列 的迷宮中,存在著乙個入口 一些牆壁以及...
BFS迷宮求塊問題
題目描述 給出乙個m n的矩陣,矩陣中的元素為0或1.稱位置 x,y 與其上下左右四個位置是相鄰的。如果矩陣中有若干個1相鄰,則稱這些1構成了乙個塊。求給定矩陣中的塊數。輸入 0 1 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 1 1 1 ...