SCUT J O 脫離地牢

2021-05-23 17:56:01 字數 1205 閱讀 2542

time limit:

1000ms

memory limit:

10000k

在乙個神秘的國度裡,年輕的王子paris與美麗的公主helen在一起過著幸福的生活。他們都隨身帶有一塊帶磁性的陰陽魔法石,身居地獄的魔王satan早就想得到這兩塊石頭了,只要把它們溶化,satan就能吸收其精華大增自己的魔力。於是有一天他趁二人不留意,吧他們帶到了自己的地牢,分別困在了不同的地方。然後satan念起了咒語,準備煉獄,屆時二人都將葬身於這地牢裡。

危險!paris與helen都知道了satan的意圖,他們怎樣才能打敗魔王,脫離地牢呢?paris想起了父王臨終前留給他的備忘本,原來他早已料到了satan的野心,他告訴paris只要把兩塊魔法石合在一起,念起咒語,它們便會放出無限的光亮,殺死魔王,脫離地牢,而且本子上還附下了地牢的地圖,paris從中了解到了helen的位置所在。於是他決定首先要找到helen,但是他發現這個地牢很奇怪,它會增強二人魔法石所帶磁力的大小,而且會改變磁力的方向。這就是說,每當paris向南走一步,helen有可能會被石頭吸引向北走一步。而這個地獄布滿了岩石與岩漿,paris必須十分小心,不僅他不能走到岩石或岩漿上,而且由於他行走一步,helen的位置也會改變,如果helen碰到岩石上,那麼她將停留在原地,但如果helen移動到了岩漿上,那麼她將死去,paris就找不到她了。

paris仔細分析了地圖,他找出了一條最快的行走方案,最終與helen相聚。他們一起唸出了咒語「@^&#…%@%&$」,轟隆一聲,地牢塌陷了,他們又重見光明……

輸入資料第1行為兩個整數n,m(3≤n,m≤20),表示地牢的大小,n行m列。

接下來n行,每行m個字元,描述了地牢的地圖,「.」代表通路,「#」代表岩石,「!」代表岩漿。輸入保證地牢是封閉的,即四周均是岩石或岩漿。「p」和「h」分別代表paris和helen的位置。

接下來有4個字元「n」(北),「s」(南),「w」(西),「e」(東)的排列,表示paris分別向n、s、w、e方向走時helen受磁石磁力影響的移動方向。

輸出檔案只有1行,如果paris能找到helen,輸出乙個整數d,為paris最少需要行走的步數;如果paris在255步之後仍找不到helen,則輸出「impossible」。注意相遇是指paris與helen最終到達同乙個格仔,或者二人在相鄰兩格移動後碰在了一起,而後者的步數算他們移動的步數。

5 5#h..#

#.#p#

wnse

no hint.

灰常煩人的模擬

1215 脫離地牢

此題有個巨大的吐槽的地方就是最終狀態的判定有兩種情況,相遇或者到乙個格仔裡,不要忘記當隊列為空要判定狀態為結束。還有可以用方向來代表陣列的下標,是 更具有可讀性。include include include using namespace std intconst maxn 50 char map...

sicily 1215 脫離地牢

做sicily 1215脫離地牢 這一題,一直restrict function,都快崩潰了。最後發現是記憶體洩露,就是new出來的東西沒有及時delete導致的。具體是在廣度優先搜尋的時候,每找一次鄰居就new出一些節點,有些節點已被visited了然後我直接忽略它們,實際上是得把它們delete...

sicily 1215 脫離地牢

time limit 1 secs,memory limit 32 mb 在乙個神秘的國度裡,年輕的王子paris與美麗的公主helen在一起過著幸福的生活。他們都隨身帶有一塊帶磁性的陰陽魔法石,身居地獄的魔王satan早就想得到這兩塊石頭了,只要把它們熔化,satan就能吸收其精華大增自己的魔力。...