陈佳豪


私信TA

用户名:dotcpp0665353

访问量:2640

签 名:

等  级
排  名 358
经  验 5268
参赛次数 1
文章发表 48
年  龄 0
在职情况 学生
学  校 淄博职业学院
专  业 软件技术·

  自我简介:

TA的其他文章

解题思路:

注意事项:

参考代码:

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();  // 雷区行数

        int m = sc.nextInt();  // 雷区列数

        char[][] arr = new char[n][m];  // 存储雷区地雷分布

        char[][] arr1 = new char[n][m];  // 存储雷区周围格地雷数

        // 读入雷区地雷分布

        for (int i = 0; i < n; i++) {

            String line = sc.next();

            for (int j = 0; j < m; j++) {

                arr[i][j] = line.charAt(j);

            }

        }

        // 遍历雷区每个非地雷格,计算周围格地雷数

        for (int i = 0; i < n; i++) {

            for (int j = 0; j < m; j++) {

                if (arr[i][j] == '*') {  // 如果是地雷格,直接填充 *

                    arr1[i][j] = '*';

                } else {  // 如果是非地雷格,计算周围格地雷数

                    int count = 0;  // 周围格地雷数

                    for (int k = -1; k <= 1; k++) {  // 遍历周围 8 个格

                        for (int l = -1; l <= 1; l++) {

                            if (k == 0 && l == 0) {  // 中心格不做处理

                                continue;

                            }

                            int row = i + k;

                            int col = j + l;

                            if (row >= 0 && row < n && col >= 0 && col < m && arr[row][col] == '*') {

                                count++;  // 如果周围格是地雷,计数器加1

                            }

                        }

                    }

                    arr1[i][j] = (char) ('0' + count);  // 数字字符的 ASCII 码比数字小 48

                }

            }

        }

        // 输出雷区,非地雷格显示周围格地雷数,地雷格显示 *

        for (int i = 0; i < n; i++) {

            for (int j = 0; j < m; j++) {

                System.out.print(arr1[i][j]);

            }

            System.out.println();

        }

    }

}


 

0.0分

1 人评分

  评论区

  • «
  • »