ignatius 被魔王抓走了 ,有一天魔王出差去了 ,這可是 ignatius 逃亡的好機會 . 魔王住在乙個城堡裡 ,城堡是乙個 abc 的立方體 ,可以被表示成 a 個 b*c 的矩 陣,剛開始 ignatius 被關在 (0,0,0)的位置 ,離開城堡的門在 (a-1,b-1,c-1)的位置 ,現 在知道魔王將在 t 分鐘後回到城堡 ,ignatius 每分鐘能從乙個座標走到相鄰的六個 座標中的其中乙個 .現在給你城堡的地圖 ,請你計算出 ignatius 能否在魔王回來前 離開城堡 (只要走到出口就算離開城堡 ,如果走到出口的時候魔王剛好回來也算逃 亡成功 ),如果可以請輸出需要多少分鐘才能離開 ,如果不能則輸出 -1。
輸入: 輸入資料的第一行是乙個正整數 k,表明測試資料的數量 .每組測試資料的第 一行是四個正整數 a,b,c 和 t(1<=a,b,c<=50,1<=t<=1000), 它們分別代表城堡的 大小和魔王回來的時間 .然後是 a 塊輸入資料 (先是第 0 塊,然後是第 1 塊,第 2 塊…),每塊輸入資料有 b 行,每行有 c 個正整數 ,代表迷宮的布局 ,其中 0 代表路 ,1 代表牆。
輸出: 對於每組測試資料 ,如果 ignatius 能夠在魔王回來前離開城堡 ,那麼請輸出他 最少需要多少分鐘 ,否則輸出 -1.
#include
#include
using namespace std;
bool mark[50]
[50][
50];int maze[50]
[50][
50];//儲存立方體資訊
struct n
;queue q;
//佇列中的元素為狀態
int go[
3]=;
intbfs
(int a,
int b,
int c)
}return-1
;//所有狀態被查詢完後,仍得不到所需座標,則返回-1
}int
main()
}}while
(q.empty()
== false) q.
pop();
mark[0]
[0][
0]= true;
n tmp;
tmp.t = tmp.y = tmp.x = tmp.z =0;
q.push
(tmp)
;int rec =
bfs(a, b, c);if
(rec <= t)
printf
("%d\n"
, rec)
;else
printf
("-1\n");
}return0;
}
王道機試練習 求素數
題目描述 給定乙個數 n,要求判斷其是否為素數 0,1,負數都是非素數 輸入 測試資料有多組,每組輸入乙個數 n。輸出 對於每組輸入 若是素數則輸出 yes,否則輸入 no。樣例輸入 13樣例輸出 yes怎樣確定乙個數是素數?我們可以用所有大於 1 小於其本身的整數去試著 整除該數,若在該區間內存在...
HDU 1253 勝利大逃亡(廣搜)
problem description ignatius被魔王抓走了,有一天魔王出差去了,這可是ignatius逃亡的好機會.魔王住在乙個城堡裡,城堡是乙個abc的立方體,可以被表示成a個b c的矩陣,剛開始ignatius被關在 0,0,0 的位置,離開城堡的門在 a 1,b 1,c 1 的位置,...
王道機試練習 高精度大整數加法
實現乙個加法器,使其能夠輸出 a b 的值。輸入 輸入包括兩個數 a 和 b,其中 a 和 b 的位數不超過 1000 位。輸出 可能有多組測試資料,對於每組資料,輸出 a b 的值。include include struct biginteger void set char str void o...