洛谷 P2670 扫雷游戏==Codevs 5129 扫雷游戏
2024-10-20 00:28:52
题目描述
扫雷游戏是一款十分经典的单机小游戏。在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格。
现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格周围的地雷格数。
注:一个格子的周围格子包括其上、下、左、右、左上、右上、左下、右下八个方向上与之直接相邻的格子。
输入输出格式
输入格式:
输入文件第一行是用一个空格隔开的两个整数n和m,分别表示雷区的行数和列数。
接下来n行,每行m个字符,描述了雷区中的地雷分布情况。字符’*’表示相应格子是地雷格,字符’?’表示相应格子是非地雷格。相邻字符之间无分隔符。
输出格式:
输出文件包含n行,每行m个字符,描述整个雷区。用’*’表示地雷格,用周围的地雷个数表示非地雷格。相邻字符之间无分隔符。
输入输出样例
输入样例#1:
3 3
*??
???
?*?
输出样例#1:
*10
221
1*1
输入样例#2:
2 3
?*?
*??
输出样例#2:
2*1
*21
说明
对于 100%的数据, 1≤n≤100, 1≤m≤100。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,f[][];
char map[][];
int dx[]={-,-,-,,,,,};
int dy[]={-,,,,,,-,-};
void dfs(int x,int y)
{
int xx,yy;
for(int i=;i<;i++)
{
xx=x+dx[i],yy=y+dy[i];
if(map[xx][yy]=='*'&&xx>=&&xx<=n&&yy>=&&yy<=m)
f[x][y]++;
}
}
int main()
{
cin>>n>>m;
memset(f,,sizeof f );
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
cin>>map[i][j];
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
if(map[i][j]=='?')
dfs(i,j);
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
if(map[i][j]=='*') cout<<map[i][j];
if(map[i][j]=='?') cout<<f[i][j];
}
cout<<endl;
} return ;
}
最新文章
- Oracle数据库验证IMP导入元数据是否会覆盖历史表数据
- Use Cursor
- NDK学习三: 纯手工编译Hello World
- 读metronic文档学到的几个知识点
- html4.0.1,h5,xhml,文档声明区别
- Tomcat 系统架构与设计模式,第 1 部分: 工作原理(转载)
- 从零开始学习jQuery (八) 插播:jQuery实施方案
- Scanner 与 Readable 的read()方法
- 使用mysql作为hive的元数据库
- centos 安装,配置memcached
- Flashback version/Transaction Query,FlashbackTable
- SAP字符串处理
- WC2016自测
- 菜鸟脱壳之脱壳的基础知识(四)——利用ESP定律来寻找OEP
- ACM-ICPC 2017 Asia Urumqi:A. Coins(DP)
- Type Call requires API level 11 (current min is 8)解决办法
- C++笔记(2018/2/7)
- 初试PyOpenGL三 (Python+OpenGL)GPGPU基本运算与乒乓技术
- 使用Eclipse的JUnit实例
- 解决 php提交表单到当前页面,刷新会重复提交 的问题