zoukankan      html  css  js  c++  java
  • Mineweep(扫雷)

    题目描述:

    每周一题之2  Mineweep(扫雷)

    Minesweeper (扫雷)

    PC/UVa IDs: 110102/10189,

    Popularity: A,

    Success rate: high Level: 1

    测试地址:https://vjudge.net/problem/UVA-10189

    [问题描述]

    Have you ever played Minesweeper? It’s a cute little game which comes within a certain Operating

    System which name we can’t really remember. Well, the goal of the game is to find where are all the mines within a M × N field. To help you, the game shows a number in a square which tells you how many mines there are adjacent to that square. For instance, supose the following 4 × 4 field with 2 mines (which are represented by an ‘*’ character):

    *...

    ....

    .*..

    ....

    If we would represent the same field placing the hint numbers described above, we would end up

    with:

    *100

    2210

    1*10

    1110

    As you may have already noticed, each square may have at most 8 adjacent squares.

    [输入]

    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 stands for the number of lines and columns of the field respectively.

    The next n lines contains exactly m characters and represent the field.

    Each safe square is represented by an ‘.’ character (without the quotes) and each mine square

    is represented by an ‘*’ character (also without the quotes). The first field line where n = m = 0

    represents the end of input and should not be processed.

    下面这段话蓝桥官方误导:

    [输出]
    
    对于每对整数 i 和 j,按原来的顺序输出 i 和 j,然后输出二者之间的整数中的最大循环节长度。这三个整数应该用单个空格隔开,且在同一行输出。对于读入的每一组数据,在输出中应位于单独的一行。

    [样例输入]

    4 4

    *...

    ....

    .*..

    ....

    3 5

    **...

    .....

    .*...

    0 0

    [样例输出]

    Field #1:

    *100

    2210

    1*10

    1110

    Field #2:

    **100

    33200

    1*100

    */

    解析: 

    1.处理好边界:

    2. 遍历每个点的每个方向,操作结课

    AC代码:

    package december.year18;
    
    import java.util.Scanner;
    
    public class Solution2 {
    
        static int [] x={0,0,1,-1,1,-1,-1,1};
        static int [] y={1,-1,0,0,1,-1,1,-1};
        
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            int cindex=1;
            while (in.hasNext()) {
                int n = in.nextInt();
                int m = in.nextInt();
                if(m==0&&m==n) {
                    return;
                }
                char[][] mat = new char[n][];
    
                for (int i = 0; i < mat.length; i++) {
                    mat[i]=in.next().toCharArray();
                }
                
                int mL=mat[0].length;
                for (int i = 0; i < mat.length; i++) {
                    for (int j = 0; j < mL; j++) {
                        if(mat[i][j]!='*') {
                            for (int k = 0; k < 8; k++) {
                                int newx=i+x[k];
                                int newy=j+y[k];
                                if(newx>=0&&newy>=0&&newx<n&&newy<mL) {
                                    if(mat[newx][newy]=='*') {
                                        if(mat[i][j]=='.') {
                                            mat[i][j]='0';
                                        }
                                        mat[i][j]++;
                                    }
                                }
                            }
                        }
                    }
                }
                if(cindex>1)System.out.println();
                System.out.println("Field #"+cindex+":");
                cindex++;
                for (int i = 0; i < mat.length; i++) {
                    for (int j = 0; j < mat[i].length; j++) {
                            if(mat[i][j]=='.') {
                                System.out.print('0');
                            }else {
                                System.out.print(mat[i][j]);
                            }
                    }
                    System.out.println();
                }
            }
        }
    
    }
  • 相关阅读:
    [ASP.NET]有关缓存的一点点小思考(1)
    [C#]winfrom中DataGridView中下拉列表框数据绑定的一些小技巧
    [c#]自己制作类似winrar的打包程序(1)
    [ASP.NET]验证码的实现以及用户密码的简单加密
    [TEST]用live writer写博客
    【转载】什么是Code Smell 代码异味?
    【转】.NET NPOI操作Excel常用函数
    SpringRoo插件发布
    基于JChardet自动检测文件编码,批量转换文件编码,解决乱码问题
    FirstStep:搭建scala开发环境IDEA+scala插件+scala2.8
  • 原文地址:https://www.cnblogs.com/dgwblog/p/10094197.html
Copyright © 2011-2022 走看看