寬搜 地牢大師 又乙個基本的寬搜

2021-10-03 06:37:38 字數 1838 閱讀 8627

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

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

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

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

請問,你有可能逃脫嗎?

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

輸入格式

輸入包含多組測試資料。

每組資料第一行包含三個整數 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#

###0 0 0

輸出樣例:

escaped in 11 minute(s).
這個是乙個三維的,和下面這個二維寬搜類似

獻給阿爾吉儂的花束

總之思想就是整乙個佇列,然後把開始節點放進去,然後開始每一次判斷所有可以到達的節點放到隊尾,每次從隊頭拿乙個

**如下:

#include

#include

#include

#include

using

namespace std;

const

int n =

110;

struct point

;char g[n]

[n][n]

;point q[n * n * n]

;int dist[n]

[n][n]

;int l, r, c;

int dx[6]

=;int dy[6]

=;int dz[6]

=;intbfs

(point start, point end);}

}return-1

;}intmain()

;else

if(t ==

'e') end =;}

}int distance =

bfs(start, end);if

(distance ==-1

)printf()

;else

printf

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

, distance);}

return0;

}

又乙個amfext的bug

今天又發現乙個amfext的bug,請看如下資料結構 array va player login array 0 1 array 1319618220,這個資料結構用amfext是可以encode的,但是它 自己encode出來的結果,自己無法decode,原因出在了 使用了乙個空字串作為key,根...

又乙個碉堡的BUG

flash操作導致系統宕機。奇哉怪哉。本以為又是clock的問題,遂將system clock換成osc clock,依舊宕機。watchdog重啟!第六感告訴哥,一定是 訪問出錯進入interrupt死迴圈。最有可能的就是flash address 出錯,導致bus fault.寄出殺手鐗,重定位...

又乙個加班的週日

蓉城的陽光到了週末總會異樣的好。休閒的城市,配上了這種休閒的天氣,整個空氣都瀰漫著一種休閒的味道。可惜,現在,我又得在辦公室對著顯示器渡過這個陽光燦爛的日子。作程式設計師快到第三個年頭了,當加班已成為習慣,也就不再稱之為加班。就和吃飯 睡覺一樣成了生活的一部分。忽然覺得有點對不起女友,難得的乙個週末...