problem description
可憐的公主在一次次被魔王擄走一次次被騎士們救回來之後,而今,不幸的她再一次面臨生命的考驗。魔王已經發出訊息說將在t時刻吃掉公主,因為他聽信謠言說吃公主的肉也能長生不老。年邁的國王正是心急如焚,告招天下勇士來拯救公主。不過公主早已習以為常,她深信智勇的騎士lj肯定能將她救出。
現據密探所報,公主被關在乙個兩層的迷宮裡,迷宮的入口是s(0,0,0),公主的位置用p表示,時空傳輸機用#表示,牆用表示,平地用.表示。騎士們一進入時空傳輸機就會被轉到另一層的相對位置,但如果被轉到的位置是牆的話,那騎士們就會被撞死。騎士們在一層中只能前後左右移動,每移動一格花1時刻。層間的移動只能通過時空傳輸機,且不需要任何時間。
input
輸入的第一行c表示共有c個測試資料,每個測試資料的前一行有三個整數n,m,t。 n,m迷宮的大小nm(1 <= n,m <=10)。t如上所意。接下去的前nm表示迷宮的第一層的布置情況,後nm表示迷宮第二層的布置情況。
output
如果騎士們能夠在t時刻能找到公主就輸出「yes」,否則輸出「no」。
sample input
1
5 5 14
s*#*.
.#...
.....
****.
...#.
..*.p
#.*..
***..
...*.
*.#..
sample output
yes
這道題其實就是賊經典的bfs,只不過多了乙個傳輸空間,其實相當於遇到#的時候多了乙個鄰接點,需要將此情況單獨列出來。(如果不會bfs建議還是了解一下其思想,不建議直接看**,思想才是最重要的)
**注意:**①佇列記得清空,因為不只是一組測試的資料
②關於bfs函式的結果(判斷何時輸出yes),如果此路根本不通,也就是根本無法救出公主,這個時候也要考慮到,不然結果一定會wa
下面附上ac**:
#include
#include
#include
#include
using
namespace std;
int ex,ey,ez,tx,ty,tz,n,m,t,op;
int next1[4]
[2]=
,,,}
;char tu[2]
[12][
12];int bj[2]
[12][
12];struct node
;void
bfs(
int x,
int y,
int z)
for(
int i=
0; i<
4; i++)}
if( tu[pre.z]
[lst.x]
[lst.y]
=='.'
||tu[pre.z]
[lst.x]
[lst.y]
=='p'
)//當前點可以走}}
}int
main()
} op=0;
bfs(0,
0,0)
;if(op==1)
printf
("yes\n");
else
printf
("no\n");
}}
杭電OJ測試資料探勘計畫
前言 首先,hduoj已經出現多年,上面的大部分經典題目已經被被人咀嚼透爛了,也能通過搜尋引擎搜尋到許多現成的 如果有測試資料,那麼就能拿自己的程式的輸出與前人的程式的輸出進行比對,找出問題所在。然後,對於沒有被別人嚼爛的題目,也可以借助測試資料,更好地分析程式問題所在,不至於僅僅過了簡單的samp...
飯卡 杭電oj
解題思路就是沒有5元的直接輸出 大於5元的要用5元貪心價值最大的 減去5元後的錢要最優即動態規劃中的01揹包 include include include using namespace std int c 1005 1005 int max int a,int b int main m1 m m...
杭電oj 迷瘴
通過懸崖的yifenfei,又面臨著幽谷的考驗 幽谷周圍瘴氣瀰漫,靜的可怕,隱約可見地上堆滿了骷髏。由於此處長年不見天日,導致空氣中布滿了毒素,一旦吸入體內,便會全身潰爛而死。幸好yifenfei早有防備,提前備好了解藥材料 各種濃度的萬能藥水 現在只需按照配置成不同比例的濃度。現已知yifenfe...