王道機試練習 勝利大逃亡之廣度優先搜尋

2021-10-08 06:47:22 字數 1358 閱讀 5456

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