ACM-生化武器
Description
在一个封闭的房间里,gogo给大家表演了他的屁遁术,人果然一下没影了,但是他留下的“生化武器”,却以每秒1米的速度向上下左右扩散出去。为了知道自己会不会被“毒”到,你果断写了个算法计算出了“毒气”在t秒时间内可以到达的所有地方。
输入
有多组测试数据
第一行输入n,m,t(0<n,m<=30)
n和m表示图的行和列,t表示时间 ,‘*’为表演的地点,‘X’是墙,‘.’为空白的地方
输出
如果在t秒时间内毒气没有充满房间或刚好充满,输出现在房间里的情况,‘#’表示有‘毒气’的地方
否则,输出“No”
每组数据输出后有一个空行
输入样例
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
样例输出
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。
- // 生化武器.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- #include <iostream>
- #include <cstring>
- #include <queue>
- using namespace std;
- struct Point
- {
- int x, y;
- int time;
- Point(int xx, int yy, int tt)
- {
- x = xx;
- y = yy;
- time = tt;
- }
- };
- const int MAX = ;
- int n, m, t, uncnt, fillcnt, dir[][] = { , , , -, , , -, };
- char map[MAX][MAX];
- queue<Point> q;
- int main()
- {
- while (cin>>n>>m>>t)
- {
- memset(map, '\0', sizeof(map));
- uncnt = ;
- fillcnt = ;
- for (int i = ; i < n; i++)
- cin >> map[i];
- for (int i = ; i < n; i++)
- {
- for (int j = ; j < m; j++)
- {
- if (map[i][j] == '*')
- {
- Point p(i,j,);
- map[p.x][p.y] = '#';
- fillcnt++;
- q.push(p);
- }
- else if (map[i][j] == '.')
- {
- uncnt++;
- }
- }
- }
- while (!q.empty() && t)
- {
- Point now = q.front();
- q.pop();
- //cout << "now.x:" << now.x << "\tnow.y:" << now.y << "\tnow.t:" << now.time << endl;
- if (now.time > t) break;
- for (int i = ; i < ; i++)
- {
- int nx = now.x + dir[i][];
- int ny = now.y + dir[i][];
- //cout << "nx:" << nx << "\tny:" << ny << "\tmap:" << map[nx][ny] << endl;
- if (map[nx][ny] == '.' && nx >= && ny >= && nx < n && ny < m)
- {
- Point next(nx,ny,now.time+);
- map[next.x][next.y] = '#';
- fillcnt++;
- q.push(next);
- }
- }
- }
- if (uncnt == fillcnt) cout << "No" << endl;
- else
- {
- for (int i = ; i < n; i++)
- cout << map[i] << endl;
- }
- }
- return ;
- }
ACM-生化武器的更多相关文章
- 韩国研发AI武器遭抵制,武器自带“头脑”将多可怕
禁止自主武器的开发,事实上并不妨碍人工智能技术的发展,也不妨碍其被正常用于军事领域,其中的关键就在于,人类是否拥有控制权,能否在关键时刻对其进行关闭. 文 |郑伟彬 转自新京报专栏 4月4日,全球超过 ...
- 生物信息Python-从入门到精通?
Python开发的方向太多了,有机器学习,数据挖掘,网络开发,爬虫等等.其实在生信领域,Python还显现不出绝对的优势,生信的大部分软件流程都是用shell或Perl写的,而且已经足够好用了.我选P ...
- caoz的梦呓:信息安全,别为了芝麻丢了西瓜
猫宁!!! 参考链接:https://mp.weixin.qq.com/s/z6UI-tdhN1CGdqQQuglLVQ 对方公众号:caoz的梦呓 我之前写微博的时候,经常就有读者反馈说,你怎么用3 ...
- Python 开发工具推荐
对于开发工具,仁者见仁智者见智,关键是自己喜欢,用着顺手就好,不用刻意去追求别人用的是什么工具. 这里给大家主要推荐三款工具,分别是PyCharm.Sublime Text 3.VS Code,因为这 ...
- Docker详解(上)
Docker 学习 Docker概述 Docker安装 Docker命令 镜像命令 容器命令 操作命令 ... Docker镜像 容器数据卷 DockerFile Docker网络原理 IDEA整合D ...
- 【转】ACM搜索算法总结 --By GreenHand
搜索是ACM竞赛中的常见算法,本文的主要内容就是分析它的 特点,以及在实际问题中如何合理的选择搜索方法,提高效率.文章的第一部分首先分析了各种基本的搜索及其各自的特点.第二部分在基本搜索方法的基础上提 ...
- 面试官的七种武器:Java篇
起源 自己经历过的面试也不少了,互联网的.外企的,都有.总结一下这些面试的经验,发现面试官问的问题其实不外乎几个大类,玩不出太多新鲜玩意的.细细想来,面试官拥有以下七种武器.恰似古龙先生笔下的武侠世界 ...
- ACM 中常用的算法有哪些? 2014-08-21 21:15 40人阅读 评论(0) 收藏
ACM 中常用的算法有哪些?作者: 张俊Michael 网络上流传的答案有很多,估计提问者也曾经去网上搜过.所以根据自己微薄的经验提点看法. 我ACM初期是训练编码能力,以水题为主(就是没有任何算法, ...
- 2014年河南省第七届ACM大赛总结
虽然大赛已经结束了两天,不过比赛的场景还是不断地在眼前回放,一遍遍,这次的比赛给了我很深刻的感悟还有教训. 刚开始比赛选择了贩卖武器那道题,也是全场到最后唯一没有被人做出来的一道题,策略的严重错误,大 ...
随机推荐
- TensorFlow 训练只用cpu
os.environ["CUDA_VISIBLE_DEVICES"] = ""
- 建设基于TensorFlow的深度学习环境
一.使用yum安装git 1.查看系统是否已经安装git git --version 2.yum 安装git yum install git 3.安装成功 git --version 4.进入指定目录 ...
- 【 JdbcUtils 】mysql数据库查询
JdbcUtils package k.util; import java.sql.*; import java.util.ArrayList; import java.util.HashMap; i ...
- CentOS6.9安装redis
目录 Centos6.9下的Redis安装和配置(最简易方式) redis客户端登录方式 Centos6.9下的Redis安装和配置(最简易方式) 在服务器上创建一个目录/service,然后下载re ...
- C#中SqlDataAdapter的使用小结---转载
C#中SqlDataAdapter的使用小结 转载 叁木-Neil 最后发布于2018-06-07 21:29:39 阅读数 8275 收藏 展开 SqlDataAdapter对象 一.特点介绍1.表 ...
- Python作业篇 day03
###一.有变量name = 'aleX leNb',完成如下的操作 name = 'aleX leNb' name1 = ' aleX leNb ' #1.移除name1 变量对应的值两边的空格 , ...
- 【剑指Offer面试编程题】题目1389:变态跳台阶--九度OJ
题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1 ...
- ODT珂朵莉树
关于ODT,据说是毒瘤lxl发明的,然后毒瘤鱼鱼因为我用ODT误导人D了我一回-- 这是一种基于 \(set\) 的暴力数据结构. 在使用时请注意,没看见这2东西千万别用-- 1.保证数据随机 2.有 ...
- java#tostring
通常使用apache-commons 来生成tostring方法,但是对于类型为java.util.Date的字段打印效果并不是我们想要的. @Override public String toStr ...
- dstat 监控命令详解
一.工具介绍 dstat的man手册对于该工具的解释: dstat - versatile tool for generating system resource statistics 系统资源多用途 ...