你現在被困在乙個三維地牢中,需要找到最快脫離的出路!
地牢由若干個單位立方體組成,其中部分不含岩石障礙可以直接通過,部分包含岩石障礙無法通過。
向北,向南,向東,向西,向上或向下移動乙個單元距離均需要一分鐘。
你不能沿對角線移動,迷宮邊界都是堅硬的岩石,你不能走出邊界範圍。
請問,你有可能逃脫嗎?
如果可以,需要多長時間?
輸入格式
輸入包含多組測試資料。
每組資料第一行包含三個整數 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.寄出殺手鐗,重定位...
又乙個加班的週日
蓉城的陽光到了週末總會異樣的好。休閒的城市,配上了這種休閒的天氣,整個空氣都瀰漫著一種休閒的味道。可惜,現在,我又得在辦公室對著顯示器渡過這個陽光燦爛的日子。作程式設計師快到第三個年頭了,當加班已成為習慣,也就不再稱之為加班。就和吃飯 睡覺一樣成了生活的一部分。忽然覺得有點對不起女友,難得的乙個週末...