若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

1099: Minesweeper

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,552

题目描述

Minesweeper Have you ever played Minesweeper? This cute little game comes with a certain operating system whose name we can't remember. The goal of the game is to find where all the mines are located within a M x N field. The game shows a number in a square which tells you how many mines there are adjacent to that square. Each square has at most eight adjacent squares. The 4 x 4 field on the left contains two mines, each represented by a “*'' character. If we represent the same field by the hint numbers described above, we end up with the field on the right: *… …. .*.. …. *100 2210 1*10 1110

输入

The input will consist of an arbitrary number of fields. The first line of each field contains two integers n and m ( 0 < n, m<100) which stand for the number of lines and columns of the field, respectively. Each of the next n lines contains exactly m characters, representing the field. Safe squares are denoted by “.'' and mine squares by “*,'' both without the quotes. The first field line where n = m = 0 represents the end of input and should not be processed.

输出

For each field, print the message Field #x: on a line alone, where x stands for the number of the field starting from 1. The next n lines should contain the field with the “.'' characters replaced by the number of mines adjacent to that square. There must be an empty line between field outputs.

样例输入

4 4
*...
....
.*..
....
3 5
**...
.....
.*...
0 0

样例输出

Field #1:
*100
2210
1*10
1110

Field #2:
**100
33200
1*100

参考代码

#include <stdio.h>
int f(int a) 
{
    if(a==-1)return 1; else return 0;
}
int main() 
{
    /*    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);*/
    int a,b,count=1,first=1;
    while(scanf("%d%d",&a,&b)==2 && (a!=0 || b!=0)) 
    {
        if(first)first=0; else printf("nn");
        int i,j;
        char s[110][110];
        int h[110][110]= {0};
        for(i=0; i<=a; i++)gets(s[i]);
        for(i=1; i<=a; i++)
        {
            for(j=1; j<=b; j++)
            {
                if(s[i][j-1]=='*')h[i][j]=-1;
                else h[i][j]=0;
            }
        }
        for(i=1; i<=a; i++)
        {
            for(j=1; j<=b; j++)
            {
                if(h[i][j]!=-1)
                {
                    h[i][j]=f(h[i-1][j-1])+f(h[i-1][j])+f(h[i-1][j+1])+f(h[i][j-1])+f(h[i][j+1])+f(h[i+1][j-1])+f(h[i+1][j])+f(h[i+1][j+1]);
                }
            }
        }
        printf("Field #%d:n",count++);
        for(i=1; i<=a; i++)
        {
            for(j=1; j<=b; j++)
            {
                if(h[i][j]==-1)printf("*");
                else printf("%d",h[i][j]);
            }
            if(i!=a)printf("n");
        }
    }
    printf("n");
    return 0;
}

解析

暂无

hustoj

发表评论 取消回复

邮箱地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

Skip Dreams孤独患者 原站点
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist