日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

牛客网 - 小乐乐打游戏(BFS)

發(fā)布時(shí)間:2024/3/13 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客网 - 小乐乐打游戏(BFS) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

鏈接:https://ac.nowcoder.com/acm/contest/301/G
來(lái)源:牛客網(wǎng)

時(shí)間限制:C/C++ 1秒,其他語(yǔ)言2秒
空間限制:C/C++ 32768K,其他語(yǔ)言65536K
64bit IO Format: %lld

題目描述

小樂(lè)樂(lè)覺(jué)得學(xué)習(xí)太簡(jiǎn)單了,剩下那么多的時(shí)間好無(wú)聊,于是便想打游戲。
最近新出了一個(gè)特別火的游戲,叫吃豬,小樂(lè)樂(lè)準(zhǔn)備玩一玩。
吃豬游戲很簡(jiǎn)單,給定一個(gè)地圖,大小為n*m,在地圖中會(huì)隨機(jī)出現(xiàn)一個(gè)火山口,只要小樂(lè)樂(lè)能逃離這個(gè)地圖,他便能吃豬!?
但吃雞遠(yuǎn)沒(méi)有那么簡(jiǎn)單:
? 1.小樂(lè)樂(lè)每走一次只能上下左右四個(gè)方向中走一步。
? 2.小樂(lè)樂(lè)每走一步,火山噴發(fā)的巖漿就會(huì)向四周蔓延一個(gè)格子,所有巖漿走過(guò)的地方都視為被巖漿覆蓋。
? 3.小樂(lè)樂(lè)碰到巖漿就會(huì)死。
? 4.地圖中還有很多障礙,使得小樂(lè)樂(lè)不能到達(dá),但是巖漿卻可以把障礙融化。
? 5.小樂(lè)樂(lè)只有走到題目給定的終點(diǎn)才算游戲勝利,才能吃豬。
小樂(lè)樂(lè)哪見過(guò)這場(chǎng)面,當(dāng)場(chǎng)就蒙了,就想請(qǐng)幫幫他,告訴他是否能吃豬。

輸入描述:

多組樣例輸入第一行給定n,m,(1 <= n, m <= 1000)代表地圖的大小。接下來(lái)n行,每一行m個(gè)字符,代表地圖,對(duì)于每一個(gè)字符,如果是'.',代表是平地,'S'代表小樂(lè)樂(lè)起始的位置, 'E'代表終點(diǎn),'#'代表障礙物,'F'代表火山口。

輸出描述:

輸出只有一行。如果小樂(lè)樂(lè)能吃豬,輸出"PIG PIG PIG!"。否則輸出"A! WO SI LA!"。

輸入

3 3
F..
#S#
#.E

輸出

PIG PIG PIG!

解題思路

這道題其實(shí)就是讓你判斷一下巖漿和小樂(lè)樂(lè)誰(shuí)先到達(dá)終點(diǎn)。直接用BFS搜索一下就行了,只要巖漿到終點(diǎn)的距離小于小樂(lè)樂(lè)到終點(diǎn)的距離,那么小樂(lè)樂(lè)肯定是到不了的。注意一下巖漿的距離是怎樣求的。

#include <queue> #include <cmath> #include <cstdio> #include <cstring> #include <iostream> using namespace std; const int N = 1005; const int inf = 99999999; int n, m, ex, ey, len; int map[N][N], vis[N][N]; int nex[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; struct edge {int u, v, flag; }t; int BFS(int u, int v) {vis[u][v] = 1;queue <edge> Q;Q.push((edge){u, v, 0});while (!Q.empty()) {t = Q.front();Q.pop();for (int i = 0; i < 4; i++) {int tx = t.u + nex[i][0];int ty = t.v + nex[i][1];if (t.flag + 1 > len)return inf;if (tx == ex && ty == ey)return t.flag + 1;if (tx < 0 || tx >= n || ty < 0 || ty >= m)continue;if (map[tx][ty] && !vis[tx][ty]) {vis[tx][ty] = 1;Q.push((edge){tx, ty, t.flag + 1});}}}return inf; } int main() {char s[N];int ans, sx, sy, px, py;while (~scanf("%d%d", &n, &m)) {memset(vis, 0, sizeof(vis));for (int i = 0; i < n; i++) {scanf("%s", s);for (int j = 0; j < m; j++) {if (s[j] != '#') {map[i][j] = 1;switch (s[j]) {case 'S': sx = i; sy = j; break;case 'E': ex = i; ey = j; break;case 'F': px = i; py = j; break;}}else map[i][j] = 0;}}len = abs(px - ex) + abs(py - ey);ans = BFS(sx, sy);if (ans <= len)printf("PIG PIG PIG!\n");else printf("A! WO SI LA!\n");}return 0; }

?

總結(jié)

以上是生活随笔為你收集整理的牛客网 - 小乐乐打游戏(BFS)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。