小樂樂打遊戲 入門BFS

2021-09-02 11:07:00 字數 1427 閱讀 5622

題目描述

小樂樂覺得學習太簡單了,剩下那麼多的時間好無聊,於是便想打遊戲。

最近新出了乙個特別火的遊戲,叫吃豬,小樂樂準備玩一玩。

吃豬遊戲很簡單,給定乙個地圖,大小為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 3

f..#s#

#.e

輸出。

pig pig pig!
題解:

入門bfs 分別記錄 起始位置,火的位置,終止位置,bfs跑即可

但是在判斷條件上加上abs(next.x-f.x)+abs(next.y-f.y)>next.time

其中 next.x表示下一步的橫座標,next.y表示下一步的縱座標 next.step  表示走過步數(也可以理解為時間)

只需要火山與人的距離大於火山蔓延的步數即可 (也可以想象成乙個人去追擊另乙個人)這兩個人之間的距離要大於追擊人走的距離

#include typedef long long ll;

using namespace std;

const int mx = 1e9+5;

#define ms(a,b) memset(a,b,sizeof(a))

int n,m;

char maze[1005][1005];

int vis[1005][1005];

int dir[4][2]= ;

struct node

s,f,e;

int bfs()}}

return 0;

}int main()

}if(bfs())cout<<"pig pig pig!"

return 0;

}

牛客小樂樂打遊戲

題意 原文中文題意就不說了 題解 重點就是處理人每走一步,火山蔓延一層,怎麼控制這個關係,實驗室大佬看完題後,求火山口與人將走的點的曼哈頓距離有關 畫畫圖就是這樣。所以在bfs列舉四個方向的時候考慮下火山蔓延層數即可。include define ll long long using namespa...

哈理工院賽 小樂樂打遊戲

題目描述 小樂樂覺得學習太簡單了,剩下那麼多的時間好無聊,於是便想打遊戲。最近新出了乙個特別火的遊戲,叫吃豬,小樂樂準備玩一玩。吃豬遊戲很簡單,給定乙個地圖,大小為n m,在地圖中會隨機出現乙個火山口,只要小樂樂能逃離這個地圖,他便能吃豬!但吃雞遠沒有那麼簡單 1.小樂樂每走一次只能上下左右四個方向...

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

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 題目描述 小樂樂覺得學習太簡單了,剩下那麼多的時間好無聊,於是便想打遊戲。最近新出了乙個特別火的遊戲,叫吃豬,小樂樂準備玩一玩。吃豬遊戲很簡單,給定乙個地圖,大小為n ...