ACM-生化武器

Description
在一个封闭的房间里,gogo给大家表演了他的屁遁术,人果然一下没影了,但是他留下的“生化武器”,却以每秒1米的速度向上下左右扩散出去。为了知道自己会不会被“毒”到,你果断写了个算法计算出了“毒气”在t秒时间内可以到达的所有地方。Input
有多组测试数据

第一行输入n,m,t(0<n,m<=30)

n和m表示图的行和列,t表示时间 ,‘*’为表演的地点,‘X’是墙,‘.’为空白的地方Output
如果在t秒时间内毒气没有充满房间或刚好充满,输出现在房间里的情况,‘#’表示有‘毒气’的地方

否则,输出“No”

每组数据输出后有一个空行

Sample Input

9 9 4
XXXXXXXXX
X...X...X
X.*.....X
X...X...X
XXXXXXXXX
X.......X
X.......X
X.......X
XXXXXXXXX

5 5 2
XXXXX
X...X
X.*.X
X...X
XXXXX

Sample Output:

XXXXXXXXX
X###X#..X
X######.X
X###X#..X
XXXXXXXXX
X...X
X...X
X...X
XXXXXXXXX

XXXXX
X###X
X###X
X###X
XXXXX

思路:这种题就是纯遍历,用DFS和BFS都可以,这里为了练习BFS,就是用了BFS。

 1 // 生化武器.cpp : 定义控制台应用程序的入口点。
 2 //
 3
 4 #include "stdafx.h"
 5
 6 #include <iostream>
 7 #include <cstring>
 8 #include <queue>
 9 using namespace std;
10 struct Point
11 {
12     int x, y;
13     int time;
14     Point(int xx, int yy, int tt)
15     {
16         x = xx;
17         y = yy;
18         time = tt;
19     }
20 };
21
22 const int MAX = 100;
23 int n, m, t, uncnt, fillcnt, dir[4][2] = { 0, 1, 0, -1, 1, 0, -1, 0 };
24 char map[MAX][MAX];
25 queue<Point> q;
26
27
28
29 int main()
30 {
31     while (cin>>n>>m>>t)
32     {
33         memset(map, ‘\0‘, sizeof(map));
34         uncnt = 0;
35         fillcnt = 0;
36
37         for (int i = 0; i < n; i++)
38             cin >> map[i];
39
40         for (int i = 0; i < n; i++)
41         {
42             for (int j = 0; j < m; j++)
43             {
44                 if (map[i][j] == ‘*‘)
45                 {
46                     Point p(i,j,0);
47                     map[p.x][p.y] = ‘#‘;
48                     fillcnt++;
49                     q.push(p);
50
51                 }
52                 else if (map[i][j] == ‘.‘)
53                 {
54                     uncnt++;
55                 }
56             }
57         }
58         while (!q.empty() && t)
59         {
60             Point now = q.front();
61             q.pop();
62             //cout << "now.x:" << now.x << "\tnow.y:" << now.y << "\tnow.t:" << now.time << endl;
63             if (now.time > t) break;
64             for (int i = 0; i < 4; i++)
65             {
66                 int nx = now.x + dir[i][0];
67                 int ny = now.y + dir[i][1];
68                 //cout << "nx:" << nx << "\tny:" << ny << "\tmap:" << map[nx][ny] << endl;
69                 if (map[nx][ny] == ‘.‘ && nx >= 0 && ny >= 0 && nx < n && ny < m)
70                 {
71                     Point next(nx,ny,now.time+1);
72                     map[next.x][next.y] = ‘#‘;
73                     fillcnt++;
74                     q.push(next);
75                 }
76             }
77
78         }
79         if (uncnt == fillcnt) cout << "No" << endl;
80         else
81         {
82             for (int i = 0; i < n; i++)
83                 cout << map[i] << endl;
84         }
85
86     }
87
88     return 0;
89 }

原文地址:https://www.cnblogs.com/x739400043/p/8603794.html

时间: 2024-08-29 08:26:29

ACM-生化武器的相关文章

生化武器2--bfs

1 #include<cstdio> //bfs; 2 #include<iostream> 3 #include<queue> 4 #include<memory.h> 5 using namespace std; 6 struct data 7 { 8 int x,y,t; 9 }now,pos; 10 int n,m,t,dis[4][2]={0,1,0,-1,1,0,-1,0}; 11 char map[105][105]; 12 void read

《永无止境》影评

潦倒颓废的艾迪·莫莱(布莱德利·库珀 Bradley Cooper 饰)是一个丢掉了工作,缺乏灵感的作家.许久不联系的前小舅子给他一种正处在试验阶段的药物--NZT.服用一次之后艾迪发现自己精力充沛,思维清晰,行动敏捷,甚至能在瞬间把一些平时不易留意的细节和信息重新组合和整理并得出推论.等他再一次去找小舅子却发现他已被人谋杀,屋里一片狼藉,紧跟着是一群杀手的追杀.死里逃生的艾迪终于发现了这款名为NZT的新药物能使人发挥大脑100%的能力.借助NZT,艾迪重获灵感并进入上流社会,但大获成功之余也有

微信拉票背后的利益纠葛

微信自发布以来,就一直处于舆论的漩涡之中.虽然微信官方不断针对功能进行各种优化,但人民群众的智慧是无穷的,总会找到微信的"漏洞",成功让其延伸出更多的花样用途.花样翻新的"面膜微商"暂且不提,近段时间以来,不论是在朋友圈还是在好友群里,总是出现"帮我家宝贝投票"的消息. 如此高频次.大批量且毫无节制的拉票消息,已经严重影响微信的使用感受.微信拉票的背后,更多的是剪不断的利益纠葛.如果你不慎掉入"坑中",还是赶快爬出来吧! 不胜

转基因食品 误常吃

转基因阴谋:清理"垃圾人口"--太可怕了    1995年9月27日,在美国旧金山秘密召开了一场影响深远的会议,在FairmontSanFrancisco(费尔蒙特酒 店),该会议由美国前总统老布什,英国前总统首相布莱尔,前首相撒切尔夫人等政界强者和金融界强者索罗 斯等人组成,伦敦-------华尔街轴心巨头共500多位"全球精英"参加.会议的核心主题就是如果保持在这些 "全球精英"领导下的"世界经济繁荣",会议得出的结论就是

埃博拉大灾难是谁引起的?

今年的这次西非埃博拉疫情大爆发是人类历史上最可怕的"瘟疫"(一种可致人死亡的流行病),必将加载人类史冊.因而.彻底调查清楚它的起因非常有必要. 流行病学家深入到非洲大陆边远地区的一个农村发现了这次埃博拉疫情大爆发的源头:一个2岁的小男孩"hada fever(发热),melena(便血)and vomited (呕吐) 4 days, and then died on December 6th last year. 7 days later, his mother also

“匿名聊聊”作者谈如何打造现象级爆款小程序

前段时间小程序“匿名聊聊”刷爆了朋友圈,可惜后面被屏蔽了.作为第一款现象级呈现爆炸级传播的小程序它是如何做到的呢?我们就跟随“匿名聊聊”作者来聊聊如何打造现象级爆款小程序. 作为第一款现象级呈现爆炸级传播的小程序,“匿名聊聊”背后的公司:朋友印象是一家深耕社交产品的公司,创始人栗浩洋和魏志成两人都公开表示,这次的“匿名聊聊”是扔出的一个问路的石子,真正的生化武器和核弹还在后面. 被寄予厚望的小程序自今年1月上线以来,一直表现的冷冷清清.流量入口没有优先级的倾斜,用户获取提供的也是模糊搜索,即便微

伟大是熬出来的

目录 前言 引言  时间熬成伟大:领导者要像狼一样坚忍 第一章  内圣外王--领导者的心态修炼 1. 天纵英才的自信心 2. 上天揽月的企图心 3. 誓不回头的决心 4. 宠辱不惊的平常心 5. 换位思考的同理心 6. 激情四射的热心 第二章  日清日高--领导者的高效能修炼 7. 积极主动,想到做到 8. 合理掌控自己的时间和生命 9. 制定目标,马上行动 10. 要事第一,既见树又见林 11. 吾日三省吾身,不断更新自我 第三章  厚德载物--领导者的影响力修炼 12. 大肚能容的胸襟 13

OSChina 周一乱弹 —— 人生在世,吃喝二字!

周一,起床上班去啦-周末就这样匆匆的走了,不带走一片云彩,深圳现在还是阴沉沉的,下了两天雨了 @永和 : 毫无感觉的一个周末就这样过去了. @张涛OSC : 坑爹啊,本来还说是今天天气挺好,骑车去红树林,结果尼玛刚骑到深圳湾开始下大雨,就这样湿身了.          ------我只是一条小尾巴 虽然舍不得周末这货,但是这上班也没啥不好的,这不公司里帅哥美女多,养眼又养颜啊--- @xiao猪快跑 : 最近是陷入了什么怪圈,总感觉很多事情要做,但好像又什么都没法开始做.理理思绪,重新出发 如果

浅谈自组网技术在国外军事领域的应用

自组网技术来源于军事通信协同作战需求,随着世界各国军队网络中心战的转型,自组网技术被军队日渐重视,应用于军事通信的各个方面.下面就已知的自组网技术在国外军事领域的用途展开介绍. 战术通信数据链 驱动着军队从“平台中心战”向“网络中心战”转型的技术装备,就是战术数据链.美国防部为了将各军兵种研制的通信装备统一起来,充分利用网络中心战基础设施,成立了联合项目执行办公室,目的是提供一个满足联合战术无线电系统(JTRS)作战需求说明书规范的.波形.接口标准化的软件定义无线电(SDR)战术通信系统,使得装