時間限制:c/c++ 1秒,其他語言2秒
空間限制:c/c++ 32768k,其他語言65536k
64bit io format: %lld
題目描述
小樂樂覺得學習太簡單了,剩下那麼多的時間好無聊,於是便想打遊戲。
最近新出了乙個特別火的遊戲,叫吃豬,小樂樂準備玩一玩。
吃豬遊戲很簡單,給定乙個地圖,大小為n*m,在地圖中會隨機出現乙個火山口,只要小樂樂能逃離這個地圖,他便能吃豬!
但吃雞遠沒有那麼簡單:
1.小樂樂每走一次只能上下左右四個方向中走一步。
2.小樂樂每走一步,火山噴發的岩漿就會向四周蔓延乙個格仔,所有岩漿走過的地方都視為被岩漿覆蓋。
3.小樂樂碰到岩漿就會死。
4.地圖中還有很多障礙,使得小樂樂不能到達,但是岩漿卻可以把障礙融化。
5.小樂樂只有走到題目給定的終點才算遊戲勝利,才能吃豬。
小樂樂哪見過這場面,當場就蒙了,就想請幫幫他,告訴他是否能吃豬。
輸入描述:
多組樣例輸入
第一行給定n,m,(1 <= n, m <= 1000)代表地圖的大小。
接下來n行,每一行m個字元,代表地圖,對於每乙個字元,如果是』.』,代表是平地,'s』代表小樂樂起始的位置,
『e』代表終點,』#'代表障礙物,'f』代表火山口。
輸出描述:
輸出只有一行。如果小樂樂能吃豬,輸出"pig pig pig!"。否則輸出"a! wo si la!"。
示例輸入
3 3f…
#s##.e
輸出pig pig pig!
注意:本題四周是上下左右,而不是八個方向。
思路1:兩次bfs,先搜火山再搜人
思路2:一次bfs,搜出人到出口的最小步數,和火山到出口的最小步數比較,如果前者小,說明岩漿不會跑在人的前面
#include
#include
#include
#include
using
namespace std;
struct nodep,tp;
int t[4]
[2]=
;char map[
1005][
1005];
bool book[
1005][
1005];
int n,m,sx,sy,ex,ey,fx,fy;
intbfs()
}}return-1
;}intmain()
else
if(map[i]
[j]==
's')
else
if(map[i]
[j]==
'e')}}
int step=
bfs();
int h=
abs(fx-ex)
+abs
(fy-ey)
;//火山到出口的最小步數
if(step)printf
("pig pig pig!\n");
else
printf
("a! wo si la!\n");
}return0;
}
一次提交觸發兩次請求
我們公司的專案都是前後端分離的,上線幾個月以來,發現乙個很奇怪的問題,每次前端發起請求,通過瀏覽器的開發者工具都能看到在network下同乙個url有兩條請求,第一條請求的method為options,第二條請求的method才是真正的get或者post,並且,第一條請求無資料返回,第二條請求才會返...
一次跳轉和兩次跳轉
我們在做 jsp或者 servlet 跳轉時,經常用到一次跳轉和兩次跳轉,到底這兩者有什麼區別呢?下面是伺服器端的兩個 jsp頁面 test1.jsp request.setattribute username leno test2.jsp requestdispatcher rd request....
一次URL請求後台響應兩次
做專案時遇到乙個問題。現象是這樣的,我在頁面點按f5重新整理頁面,但是後台 卻響應了兩次,百思不得其解。然後我就試探性的去更改html的標籤裡面的東西,可是問題依舊。我一直在思索這個問題,到底是瀏覽器請求了一次後 的執行了兩次,還是產生了兩次請求?為了得到這個答案,我搜尋到httpwatch這個工具...