Problem 1056 扫雷游戏

Accept: 2624    Submit: 6903
Time Limit: 1000 mSec    Memory Limit : 32768 KB

 Problem Description

扫雷是Windows自带的游戏。游戏的目标是尽快找到雷区中的所有地雷,而不许踩到地雷。如果方块上的是地雷,将输掉游戏。如果方块上出现数字,则表示在其周围的八个方块中共有多少颗地雷。

你的任务是在已知地雷出现位置的情况下,得到各个方块中的数据。

*...
.... “*”表示有地雷
.*.. “.”表示无地雷
....

经过处理应得到

*100
2210
1*10
1110

 Input

输入有多组数据,每组数据的第一行有两个数字,m,n(0<m,n<100)表示游戏中雷区的范围为m×n。接下来m行每行有n个字符。“*” 表示有地雷,“.”表示无地雷。最后一组数据m=0,n=0表示输入结束,不需要处理。

 Output

对于每组输入数据,输出结果,各方块数字间不留空格。每组结果之后有一个空行。

 Sample Input

2 3
***
...
4 4
*...
....
.*..
....
0 0

 Sample Output

***
232

*100
2210
1*10
1110

一开始想着这道题要用dfs之类的算法, 后来发现想多了。。。直接遍历一遍记录就可以了,但是没有看到每组输出后有一颗空行,导致错了一次。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#define ll long long
using namespace std;
const int maxn=1e6+10;
char a[110][110];
int b[110][110];
int n,m;
int main()
{
while(cin>>m>>n&&n!=EOF&&m!=EOF)
{
if(n==0&&m==0) break;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];
memset(b,0,sizeof(b));
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
if(a[i][j]=='*')
{
b[i-1][j]+=1;
b[i-1][j-1]+=1;
b[i-1][j+1]+=1;
b[i][j-1]+=1;
b[i][j+1]+=1;
b[i+1][j+1]+=1;
b[i+1][j]+=1;
b[i+1][j-1]+=1;
}
}
}
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
if(a[i][j]=='*')
{
cout<<"*";
continue;
}
else cout<<b[i][j];
}
cout<<endl;
}
cout<<endl;
}
return 0;
}

FZU OJ 1056 :扫雷游戏的更多相关文章

  1. FZU 1056 扫雷游戏【搜索】

    Accept: 2584    Submit: 6790Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem Description 扫雷是 ...

  2. FZU 1056 扫雷游戏

    水题.统计一下周围有几个雷. #include<cstdio> #include<cstring> #include<cmath> #include<algo ...

  3. 洛谷 P2670 扫雷游戏==Codevs 5129 扫雷游戏

    题目描述 扫雷游戏是一款十分经典的单机小游戏.在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格).玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有 ...

  4. 原生javascript扫雷游戏

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. Java练习(模拟扫雷游戏)

    要为扫雷游戏布置地雷,扫雷游戏的扫雷面板可以用二维int数组表示.如某位置为地雷,则该位置用数字-1表示, 如该位置不是地雷,则暂时用数字0表示. 编写程序完成在该二维数组中随机布雷的操作,程序读入3 ...

  6. JAVA_扫雷游戏(布置地雷)

    1.要为扫雷游戏布置地雷,扫雷游戏的扫雷面板可以用二维int数组表示.如某位置为地雷,则该位置用数字-1表示, 如该位置不是地雷,则暂时用数字0表示. 编写程序完成在该二维数组中随机布雷的操作,程序读 ...

  7. [LeetCode] Minesweeper 扫雷游戏

    Let's play the minesweeper game (Wikipedia, online game)! You are given a 2D char matrix representin ...

  8. C语言二维数组实现扫雷游戏

    #include<stdio.h> //使用二维数组实现 扫雷 int main() { char ui[8][8]={ '+','+','+','+','+','+','+','+', ...

  9. 【Android】自己动手做个扫雷游戏

    1. 游戏规则 扫雷是玩法极其简单的小游戏,点击玩家认为不存在雷的区域,标记出全部地雷所在的区域,即可获得胜利.当点击不包含雷的块的时候,可能它底下存在一个数,也可能是一个空白块.当点击中有数字的块时 ...

随机推荐

  1. 消息队列Kafka学习记录

    Kafka其实只是众多消息队列中的一种,对于Kafka的具体释义我这里就不多说了,详见:http://baike.baidu.com/link?url=HWFYszYuMdP_lueFH5bmYnlm ...

  2. delphi文件名获取方法

    取文件名 ExtractFileName(FileName); 取文件扩展名: ExtractFileExt(filename); 取文件名,不带扩展名: 方法一:   Function Extrac ...

  3. How to implement connection pool in spark streaming

    在spark streaming的文档里,有这么一段: def sendPartition(iter): # ConnectionPool is a static, lazily initialize ...

  4. Linux中查看各文件夹大小(扫盘)

    df -h ./ du -hs ./ du -h /ifs4/BC_RD/USER/lizhixin/my_project/human_chr22 | grep [[:digit:]+]G du [- ...

  5. Eclipse修改已存在的SVN地址

    1.Window---->Show View---->Other...

  6. VAE demo

    先看tflearn 官方的: from __future__ import division, print_function, absolute_import import numpy as np i ...

  7. jsp jsp九个内置对象

       每个JSP页面在第一次被访问的时候,WEB容器都会把请求交给JSP引擎(即一个JAVA)程序.JSP引擎先将JSP翻译成一个_jspServlet实质也是一次servlet,然后按照 Servl ...

  8. 转mysql半主从同步

    MySQL半同步复制 从MySQL5.5开始,MySQL以插件的形式支持半同步复制.如何理解半同步呢?首先我们来看看异步,全同步的概念   异步复制(Asynchronous replication) ...

  9. 4.16复杂级数的前n项和

    注意:实际编程中要注意变量类型的选取. #include <iostream> #include<cstdio> using namespace std; int main() ...

  10. 找到多个与名为“Home”的控制器匹配的类型,如果为此请求(“{controller}/{action}/{id}”)提供服务的路由没有指定命名空间来搜索匹配此请求的

    参考文章: http://blog.csdn.net/chengmodelong/article/details/41890229 https://www.cnblogs.com/zgqys1980/ ...