小樂樂打遊戲(兩次BFS 一次BFS加特殊判斷)

2021-09-02 20:40:40 字數 1609 閱讀 6801

時間限制: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這個工具...