解题思路:
注意事项:
参考代码:
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 人评分
C二级辅导-同因查找 (C语言代码)浏览:626 |
C语言训练-计算一个整数N的阶乘 (C语言代码)浏览:986 |
蛇行矩阵 (C语言代码)浏览:792 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:591 |
字符逆序 (C语言代码)浏览:706 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:645 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:566 |
1128题解(返回值为数组的情况)浏览:571 |
图形输出 (C语言代码)浏览:1422 |
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:1496 |