测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A45694. 扫雷游戏地雷数计算扫雷游戏是一款十分经典的单机小游戏。 它的精髓在于, 通过已翻开格子所提示的周围格地雷数, 来判断未翻开格子里是否是地雷。现在给出 n 行 m 列的雷区中的地雷分布, 要求计算出每个非地雷格的周围格地雷数。注: 每个格子周围格有八个: 上、 下、 左、 右、 左上、 右上、 左下、右下。 65536输入第一行包含两个整数 n 和 m, 分别表示雷区…

填空题 较易

题目描述

扫雷游戏地雷数计算

扫雷游戏是一款十分经典的单机小游戏。 它的精髓在于, 通过已翻开格子所提示的周围格地雷数, 来判断未翻开格子里是否是地雷。现在给出 n 行 m 列的雷区中的地雷分布, 要求计算出每个非地雷格的周围格地雷数。

注: 每个格子周围格有八个: 上、 下、 左、 右、 左上、 右上、 左下、右下。

时间限制: 1000

内存限制: 65536

输入

第一行包含两个整数 n 和 m, 分别表示雷区的行数和列数。 1 <= n <=100, 1 <= m <= 100。 接下来 n 行, 每行 m 个字符, ‘*’ 表示相应格子中是地雷,‘? ’ 表示相应格子中无地雷。 字符之间无任何分隔符。

输出

n 行, 每行 m 个字符, 描述整个雷区。 若相应格中是地雷, 则用‘*’表示, 否则用相应的周围格地雷数表示。 字符之间无任何分隔符。

样例输入

3 3

*??

???

?*?

样例输出

*10

221

1*1

参考答案

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(); int sum=0; char a[][]=new char[n][m]; for(int i=0;i<n;i++) { String b=in.next(); for(int j=0;j<m;j++) { a[i][j]=b.charAt(j); } } for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(a[i][j]=='*') { System.out.print("*"); } else { if(i-1>=0&&j+1<m) { if(a[i-1][j+1]=='*') { sum++; } } if(j+1<m) { if(a[i][j+1]=='*') { sum++; } } if(i-1>=0) { if(a[i-1][j]=='*') { sum++; } } if(i+1<n&&j-1>=0) { if(a[i+1][j-1]=='*') { sum++; } } if(i+1<n) { if(a[i+1][j]=='*') { sum++; } } if(j-1>=0) { if(a[i][j-1]=='*') { sum++; } } if(i-1>=0&&j-1>=0) { if(a[i-1][j-1]=='*') { sum++; } } if(i+1<n&&j+1<m) { if(a[i+1][j+1]=='*') { sum++; } } System.out.print(sum); } sum=0; } System.out.println(); } } }
上一题 下一题