哈理工院賽 小樂樂打遊戲

2021-09-02 10:14:19 字數 1900 閱讀 9884

題目描述

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

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

​ 吃豬遊戲很簡單,給定乙個地圖,大小為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!"。
示例1

輸入

3 3

f..#s#

#.e

輸出

pig pig pig!
思路:

​ 兩個bfs,注意下細節即可。。。

**:#include using namespace std;

struct node;

int dx[5]=,n,m;

int dy[5]=;

char a[1001][1001];

int vis[1001][1001];

int footstep[1001][1001];

int bfs(int startx,int starty){

dequeq;

node start;

start.x = startx;

start.y = starty;

start.foot = 0;

vis[startx][starty] = 1;

q.push_back(start);

while(!q.empty()){

node now = q.front();

q.pop_front();

// printf("x=%d y=%d foot = %d\n",now.x,now.y,now.foot);

for(int i = 0; i < 4; i++){

int x = now.x+dx[i];

int y = now.y+dy[i];

if(x>=0&&x=0&&yq;

node start;

start.x = startx;

start.y = starty;

start.foot = 0;

footstep[startx][starty] = 0;

vis[startx][starty] = 1;

q.push_back(start);

while(!q.empty()){

node now = q.front();

q.pop_front();

for(int i = 0; i < 4; i++){

int x = now.x+dx[i];

int y = now.y+dy[i];

if(x>=0&&x=0&&y如果有寫的不對或者不全面的地方 可通過主頁的****進行指正,謝謝

哈理工院賽 小樂樂搭積木

題目描述 小樂樂想要給自己搭建乙個積木城堡。積木城堡我們假設為n m的平面矩形。小樂樂現在手裡有12,21兩種地磚。小樂樂想知道自己有多少種組合方案。輸入描述 第一行輸入整數n,m。1 n,m 10 輸出描述 輸出組合方案數。示例1 輸入2 3輸出 3示例2 輸入1 3輸出 0示例3 輸入2 5輸出...

哈理工院賽 小樂樂玩木桶

題目描述 小樂樂用散落在森林裡的木板做了乙個木桶。已知底面積為s 小樂樂經過各種儀器的精密測量知道了,所有木板的近似長度h i 小樂樂只能選用三塊木板去拼木桶,小樂樂拼湊成的木桶的最大裝水體積是 容量測量,底面積乘高,木桶不傾斜 輸入描述 第一行輸入整數n,s。3 n 1000,1 s 1000,n...

哈理工院賽 小樂樂學博弈

題目描述 小樂樂和小皮蛋開始學習關於博弈的知識。給定兩堆石子,第一堆有n個石子,第二堆有m個石子。每次操作可以從一堆石子中拿走一些石子,拿走石子的數量可以是1 k個,小樂樂先手拿石子,然後依次輪流。假如到小樂樂的輪次,小樂樂拿不了了 也就是所有的石子都被拿光了 那麼小皮蛋就獲勝,反之亦然。假設小樂樂...