扫雷是Windows自带的游戏。游戏的目标是尽快找到雷区中的所有地雷,而不许踩到地雷。如果方块上的是地雷,将输掉游戏。
如果方块上出现数字,则表示在其周围的八个方块中共有多少颗地雷。
你的任务是在已知地雷出现位置的情况下,得到各个方块中的数据。
输入描述:
数据的第一行有两个数字,m, n (0 < m, n< 100)
表示游戏中雷区的范围为m×n
。
接下来m
行每行有n
个字符。*
表示有地雷,.
表示无地雷。
输出描述:
对于输入数据,输出结果,各方块数字间不留空格。地雷位置用*
表示。
代码
import java.util.Scanner;
class Solution {
public static void main(String[] args) {//测试
Solution test = new Solution();
test.maxRotateFunction();
}
public void maxRotateFunction() {
int m, n;
Scanner scan = new Scanner(System.in);
m = scan.nextInt();
n = scan.nextInt();
int[][] boom = new int[m + 2][n + 2];
for (int i = 0; i < m + 2; i++) {
for (int j = 0; j < n + 2; j++) {//建立数组及辅助项
boom[i][j] = 0;
}
}
String des;
for (int i = 1; i < m + 1; i++) {
des = scan.next();
for (int j = 1; j < n + 1; j++) {//获取炸弹位置
if ('*' == des.charAt(j - 1)) {
boom[i][j] = 1;
} else boom[i][j] = 0;
}
}
for (int i = 1; i < m + 1; i++) {
for (int j = 1; j < n + 1; j++) {//确定炸弹信息并输出
if (boom[i][j] == 1) System.out.print("*");
else {
int sum;
sum = boom[i - 1][j - 1] + boom[i - 1][j] + boom[i - 1][j + 1] + boom[i][j - 1] + boom[i][j + 1] + boom[i + 1][j - 1] + boom[i + 1][j] + boom[i + 1][j + 1];
System.out.print(sum);
}
}
System.out.println();
}
}
}
结果展示