解题思路:
利用炸弹位置来计算,先把炸弹的坐标存list里,然后再计算炸弹周围的数量,++即可
注意事项:
计算数量的时候要注意判断位置的时候,要先判断位置合理性,然后判断不可在自己的位置
参考代码:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
   public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       int n = sc.nextInt();
       int m = sc.nextInt();
       char[][] db = new char[n][m];
       int[][] arr = new int[n][m];
       List<int[]> count = new ArrayList<>();

       for (int i = 0; i < n; i++) {
           String str = sc.next();
           for (int j = 0; j < m; j++) {
               db[i][j] = '0';
               arr[i][j] = 0;
               if (str.charAt(j) == '*') {
                   count.add(new int[]{i, j});
               }
           }
       }

       count.forEach(point -> countNum(point[0], point[1], db, arr));

       printArray(db);
   }

   public static void countNum(int i, int j, char[][] db, int[][] arr) {
       db[i][j] = '*';

       for (int x = -1; x <= 1; x++) {
           for (int y = -1; y <= 1; y++) {
               int a = i + x;
               int b = j + y;
               if (a >= 0 && a < db.length && b >= 0 && b < db[0].length && db[a][b] != '*') {
                   arr[a][b]++;
                   db[a][b] = (char) (arr[a][b] + '0');
               }
           }
       }
   }

   public static void printArray(char[][] db) {
       for (char[] row : db) {
           System.out.println(new String(row));
       }
   }
}

点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论