• YTU 1099: Minesweeper


    1099: Minesweeper

    时间限制: 1 Sec  内存限制: 64 MB
    提交: 180  解决: 98

    题目描述

    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>
    #include <string.h>
    int main()
    {
        char lei[120][120];
        int ci=0,n,m;
        while(~scanf("%d%d",&n,&m)&&(n||m))
        {
            memset(lei,'0',sizeof(lei));
            for(int i=1; i<=n; i++)
                for(int j=1; j<=m; j++)
                {
                    char x;
                    scanf(" %c",&x);
                    if(x=='*')
                    {
                        lei[i][j]='*';
                        for(int ii=i-1; ii<=i+1; ii++)
                            for(int jj=j-1; jj<=j+1; jj++)
                                if(lei[ii][jj]!='*')lei[ii][jj]++;
                    }
                }
            printf("Field #%d:
    ",++ci);
            for(int i=1; i<=n; i++)
                for(int j=1; j<=m; j++)printf(j!=m?"%c":"%c
    ",lei[i][j]);
            printf("
    ");
        }
        return 0;
    }
    


    总是望着曾经的空间发呆,那些说好不分开的朋友不在了,转身,陌路。 熟悉的,安静了, 安静的,离开了, 离开的,陌生了, 陌生的,消失了, 消失的,陌路了。快哭了
  • 相关阅读:
    可实现B站 蒙版弹幕 效果的前端组件 —— Barrage UI
    C# 中的"yield"使用
    不遮挡人物弹幕是怎么实现的——图片蒙版效果-webkit-mask
    使用eslint检查代码质量
    vue 项目中assets 和static的区别
    快速生成html文本文档——typora
    VsCode中好用的git源代码管理插件GitLens
    C# 根据前台校验的值,决定是否执行后台方法
    C# 从字符串中取出英文字母
    C# 科学计数法转换成数字
  • 原文地址:https://www.cnblogs.com/im0qianqian/p/5989673.html
Copyright © 2020-2023  润新知