牛客~~扫雷~~~DFS+模拟
链接:https://www.nowcoder.com/acm/contest/118/F
来源:牛客网
题目描述
kirai获取了简化版扫雷(没有标记雷的小旗)的后台数据(后台数据包括所有数字和雷的位置),转换为一个n*m(1≤n, m≤500)的矩阵并对格子类型做了如下标记:
雷被标记为'*';
点开的空白区域标记为'0';
未点开的空白区域标记为'.';
数字1~8代表周围有多少雷;
kirai非常笨,他希望你帮他完成这样的任务:
给定k(1≤k≤min(可扫位置数, 10))个位置坐标和扫雷游戏的后台数据,输出点开指定位置序列后游戏的结果,初始时游戏中没有点开任何位置。
注:数据保证扫雷过程中不会重复点击已扫位置。
输入描述:
输入样例有多组,全部是正整数。首先输入样例组数T(T≤10)。
接下来输入T组数,每组数据第一行包括四个正整数n,m,k(1≤n, m≤500, 1≤k≤min(可扫位置数, 10))分别表示地图的行、列数和即将点开的位置数。紧接着是一个n*m的矩阵,代表扫雷的后台数据,。
矩阵后是k个整数对x
i
, y
i
(1≤i≤k, 1≤x
i
≤n, 1≤y
i
≤m),表示依次点开的位置。
输出描述:
如果某一步踩到雷,输出"Game over in step x"(不包括引号",表示第x步踩中雷);未踩到雷则根据扫雷的游戏规则更新,并输出最后一步结束后显示给kirai的矩阵。
输入例子:
1
5 5 3
2*11*
*2111
22...
*1...
11...
1 1
3 3
1 2
输出例子:
Game over in step 3
-->
输入
1
5 5 3
2*11*
*2111
22...
*1...
11...
1 1
3 3
1 2
输出
Game over in step 3
说明
2....
.....
.....
.....
.....
2....
.2111
.2000
.1000
.1000
Game over in step 3
根据题意模拟,记得初始化
#include<cstdio>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<cmath>
using namespace std;
char mp[][];
char t[][];
bool vis[][];
int d[][]={{-,},{,},{,},{,-},{-,},{,-},{,},{-,-}};
int n,m,k;
void init() {
for(int i =; i<=n; i++) {
for(int j=; j<=m; j++) {
t[i][j]='.';
}
}
}
void dfs(int x,int y) {
t[x][y]='';
for(int i=; i<; i++) {
int nx=x+d[i][];
int ny=y+d[i][];
if(nx<||ny<||nx>n||ny>m) continue;
if(mp[nx][ny]=='*') continue;
if(!vis[nx][ny]&&mp[nx][ny]=='.') {
vis[nx][ny]=;
dfs(nx,ny);
} else if(mp[x][y]>=''&&mp[x][y]<='') {
t[nx][ny]=mp[nx][ny];
}
}
}
int main() {
int T;
scanf("%d",&T);
while(T--) { memset(vis,,sizeof(vis));
scanf("%d%d%d",&n,&m,&k);
init();
for(int i=; i<=n; i++) {
for(int j=; j<=m; j++) {
cin>>mp[i][j];
}
}
int flag=;
for(int i=; i<=k; i++) {
int x,y;
scanf("%d%d",&x,&y);
if(!flag) continue;
if(mp[x][y]=='*') {
flag=;
printf("Game over in step %d\n",i);
continue;
}
if(mp[x][y]=='.') {
if(vis[x][y]==) continue;
vis[x][y]=;
dfs(x,y);
} else if(mp[x][y]>=''&&mp[x][y]<='') {
t[x][y]=mp[x][y];
}
}
if(flag) {
for(int i=; i<=n; i++) {
for(int j=; j<=m; j++) {
printf("%c",t[i][j]);
}
printf("\n");
}
}
}
return ;
}
牛客~~扫雷~~~DFS+模拟的更多相关文章
- 牛客CSP-S提高模拟4 赛后总结
前言 其实前面已经打了 3 场牛客 3 场计蒜客的比赛,都没有写总结,今天先提一下以前的情况 计蒜客 1 :0+0+0 = 0 (心态崩了,写挂了) 牛客 1: 0+0+0 = 0 (T1博弈论,T2 ...
- 牛客网_Wannafly模拟赛1
A.矩阵 题目链接:https://www.nowcoder.com/acm/contest/submit/f8363c912a4c48a28b80f47e7102b6b8?ACMContestId= ...
- 10.6-10.7 牛客网NOIP模拟赛题解
留个坑... upd:估计这个坑补不了了 如果还补不了就删了吧
- 牛客网Wannafly模拟赛
A矩阵 时间限制:1秒 空间限制:131072K 题目描述 给出一个n * m的矩阵.让你从中发现一个最大的正方形.使得这样子的正方形在矩阵中出现了至少两次.输出最大正方形的边长. 输入描述: 第一行 ...
- 牛客小白月赛6C-桃花(DFS/BFS求树的直径)
链接:https://www.nowcoder.com/acm/contest/136/C 来源:牛客网 桃花 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言 ...
- 牛客网-乌龟跑步-(四维dfs)
链接:https://ac.nowcoder.com/acm/problem/15294来源:牛客网 题目描述 有一只乌龟,初始在0的位置向右跑. 这只乌龟会依次接到一串指令,指令T表示向后转,指令F ...
- 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A
牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...
- 牛客国庆集训day5 G 贵族用户 (模拟)
链接:https://www.nowcoder.com/acm/contest/205/G来源:牛客网 题目描述 终于活成了自己讨厌的样子. 充钱能让你变得更强. 在暖婊这个游戏里面,如果你充了x元钱 ...
- 牛客小白月赛2 G 文 【模拟】
链接:https://www.nowcoder.com/acm/contest/86/G来源:牛客网 题目描述 Sεlιнα(Selina) 开始了新一轮的男友海选.她要求她的男友要德智体美劳样样都全 ...
随机推荐
- Servlet学习笔记03——什么是DAO?
1.案例 (1)添加用户 step1.建表 create table t_user( id int primary key auto_increment, username varchar(50) u ...
- tar工具(打包,压缩)
tar工具(打包,压缩)========================= tar打包工具 -c:表示建立一个tar包或者压缩文件包-x:表示解包或者解压缩-v:表示可视化-f: 后面跟文件名(即-f ...
- yii自定义行为组件(简介版)
yii2 给框架底层预定义事件自定义处理程序. 1. common\config\main.php 修改配置文件添加 'as behaviors' => 'backend\behavior ...
- 线程、进程、协程和GIL(三)
上一篇文章介绍了:创建线程的两种方式.Event对象判断线程是否启动.利用信号量控制线程并发. 博客链接:线程.进程.协程和GIL(二) 这一篇来说说线程间通信的那些事儿: 一个线程向另一个线程发送数 ...
- wps取消英文首字母大写功能
wps中关于首字母大写的功能还是很有用处的,但是有时候对于我们来说却是一种累赘,怎么取消这个功能呢? 新建一个文档之后,点击wps文字,选择工具,选项按钮 然后点击编辑,取消勾选键入时自动进行首字母大 ...
- PHP.15-mysqli
从PHP5.0开始可以使用mysql(i), 是一个面向对象的技术(新加功能都会以对象形式添加) i:表示改进,1. 功能增加了, 2,效率大大增加(以后的PHP项目改成mysqli),3,更稳定 m ...
- django之python3.4及以上连接mysql的一些问题记录
首先,祭出大杀器whl https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient django1.x与django2.x 在项目的写法上有一些区别 ...
- Fiddler - 使用教程
1.断点调试,修改请求表单和响应数据 命令介绍: bpu在请求开始时中断,bpafter在响应到达时中断,bps在特定http状态码时中断,bpv/bpm在特定请求method时中断. bpu m.t ...
- 剑指Offer - 九度1515 - 打印1到最大的N位数
剑指Offer - 九度1515 - 打印1到最大的N位数2013-11-30 01:11 题目描述: 给定一个数字N,打印从1到最大的N位数. 输入: 每个输入文件仅包含一组测试样例.对于每个测试案 ...
- 【Text Justification】cpp
题目: Given an array of words and a length L, format the text such that each line has exactly L charac ...