题目描述

扫雷游戏是一款十分经典的单机小游戏。在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 ;
}

最新文章

  1. Oracle数据库验证IMP导入元数据是否会覆盖历史表数据
  2. Use Cursor
  3. NDK学习三: 纯手工编译Hello World
  4. 读metronic文档学到的几个知识点
  5. html4.0.1,h5,xhml,文档声明区别
  6. Tomcat 系统架构与设计模式,第 1 部分: 工作原理(转载)
  7. 从零开始学习jQuery (八) 插播:jQuery实施方案
  8. Scanner 与 Readable 的read()方法
  9. 使用mysql作为hive的元数据库
  10. centos 安装,配置memcached
  11. Flashback version/Transaction Query,FlashbackTable
  12. SAP字符串处理
  13. WC2016自测
  14. 菜鸟脱壳之脱壳的基础知识(四)——利用ESP定律来寻找OEP
  15. ACM-ICPC 2017 Asia Urumqi:A. Coins(DP)
  16. Type Call requires API level 11 (current min is 8)解决办法
  17. C++笔记(2018/2/7)
  18. 初试PyOpenGL三 (Python+OpenGL)GPGPU基本运算与乒乓技术
  19. 使用Eclipse的JUnit实例
  20. 解决 php提交表单到当前页面,刷新会重复提交 的问题

热门文章

  1. NPOI 教程 - 3.2 打印相关设置
  2. Perl 小知识之多行匹配
  3. 对cocos2d 之autorelease\ratain\release的理解
  4. 特殊IP地址
  5. php调试工具总结
  6. IDEA社区版运行并发布web项目
  7. seleniu IDE 点点滴滴
  8. 史上最全的 UIWebview 的 JS 与 OC 交互
  9. 9. Android框架和工具之 SlidingMenu(抽屉菜单)
  10. java 编程军规