import java.util.Scanner; // 扫雷 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int m = in.nextInt(); in.nextLine();// char[][] arr = new char[n][m]; // 初始化 for (int i = 0; i < n; i++) { String line = in.nextLine(); arr[i] = line.toCharArray(); } in.close(); // 存储结果 String[][] res = new String[n][m]; for (int i = 0; i < n; i++) {// 行 for (int j = 0; j < m; j++) {// 列 // 雷,直接输出打印 if ('*' ==arr[i][j]) { res[i][j] = "*"; } else { // 计算雷邻格,输出数字 // 8个方向: int cnt = 0;// 雷邻格计数 int tempI = i;// 参照点 i int tempJ = j;// 参照点 j int pTimes = 3; for (int p = tempI - 1; pTimes-- > 0; p++) { int qTimes = 3; for (int q = tempJ - 1; qTimes-- > 0; q++) { if (!(p == i && q == j) // 跳过自身(i,j) && ((p >= 0 && q >= 0) && (p < n && q < m))) {// 保证下标在边界内 if ('*' == arr[p][q]) { cnt++; } } } } res[i][j] = cnt + ""; } } } for(String[] rArr : res){ for(int i = 0;i<rArr.length;i++){ System.out.printf("%s",rArr[i]); } System.out.println(); } } }
以(i,j)为中心的8个方向