FZU2285 迷宮問題 BFS求最短路 板子題

2021-10-02 16:21:53 字數 1306 閱讀 9878

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

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 ...