地牢大師(三維BFS)

2021-10-02 15:19:33 字數 1439 閱讀 7155

你現在被困在乙個三維地牢中,需要找到最快脫離的出路!

地牢由若干個單位立方體組成,其中部分不含岩石障礙可以直接通過,部分包含岩石障礙無法通過。

向北,向南,向東,向西,向上或向下移動乙個單元距離均需要一分鐘。

你不能沿對角線移動,迷宮邊界都是堅硬的岩石,你不能走出邊界範圍。

請問,你有可能逃脫嗎?

如果可以,需要多長時間?

輸入格式

輸入包含多組測試資料。

每組資料第一行包含三個整數 l,r,c 分別表示地牢層數,以及每一層地牢的行數和列數。

接下來是 l 個 r 行 c 列的字元矩陣,用來表示每一層地牢的具體狀況。

每個字元用來描述乙個地牢單元的具體狀況。

其中, 充滿岩石障礙的單元格用」#」表示,不含障礙的空單元格用」.」表示,你的起始位置用」s」表示,終點用」e」表示。

每乙個字元矩陣後面都會包含乙個空行。

當輸入一行為」0 0 0」時,表示輸入終止。

輸出格式

每組資料輸出乙個結果,每個結果佔一行。

如果能夠逃脫地牢,則輸出」escaped in x minute(s).」,其中x為逃脫所需最短時間。

資料範圍

1≤l,r,c≤100

輸入樣例:

3 4 5

s….###.

.##…

###.#

##.##

##…

#.###

####e

1 3 3

s###e#

#include

#include

#include

#include

using

namespace std;

const

int n =

110;

struct point

;int l, r, c;

char g[n]

[n][n]

;point q[n * n * n]

;int dist[n]

[n][n]

;int dx[6]

=;int dy[6]

=;int dz[6]

=;intbfs

(point start, point end);}

}return-1

;}intmain()

;else

if(c ==

'e') end =;}

}int distance =

bfs(start, end);if

(distance ==-1

)puts()

;else

printf

("escaped in %d minute(s).\n"

, distance);}

return0;

}

bfs 三維標記

做訓練賽遇到的一道題,感覺很好。大致題意 現在給你乙個地圖n m,代表是空格子,代表是有柱子阻隔。現在你站在a點,要走到b點。走的時候要遵循乙個規則 必須走相鄰的格仔,如果相鄰的格仔為有柱子格仔,那麼這個格仔與有柱子的格仔相鄰的邊 如果乙個有柱子的格仔的兩條或者多條不同的邊 了,那麼這個格仔就會變成...

腫瘤診斷 三維BFS

腫瘤診斷 在診斷腫瘤疾病時,計算腫瘤體積是很重要的一環。給定病灶掃瞄切片中標註出的疑似腫瘤區域,請你計算腫瘤的體積。輸入第一行給出4個正整數 mm nn ll tt,其中mm和nn是每張切片的尺寸 即每張切片是乙個m times nm n的畫素矩陣。最大解析度是1286 times 1281286 ...

POJ 2251(基礎三維BFS)

poj2251 在乙個三維格仔裡面,有兩種格仔,一種可以走一種不能。給定乙個起點和終點問從起點最少走多少步可以到達終點。很基礎的一道bfs,在這裡記錄一下以後處理類似的問題乙個技巧 通過xx yy zz陣列實現乙個人迴圈將乙個節點周圍的元素入隊。include include include inc...