JavaStudy——0086:掃雷遊戲地雷數計算
阿新 • • 發佈:2018-11-15
總時間限制: 1000ms 記憶體限制: 65536kB
描述
掃雷遊戲是一款十分經典的單機小遊戲。它的精髓在於,通過已翻開格子所提示的周圍格地雷數,來判斷未翻開格子裡是否是地雷。
現在給出n行m列的雷區中的地雷分佈,要求計算出每個非地雷格的周圍格地雷數。
注:每個格子周圍格有八個:上、下、左、右、左上、右上、左下、右下。
輸入
第一行包含兩個整數n和m,分別表示雷區的行數和列數。1 <= n <= 100, 1 <= m <= 100。
接下來n行,每行m個字元,‘’表示相應格子中是地雷,‘?’表示相應格子中無地雷。字元之間無任何分隔符。
輸出
n行,每行m個字元,描述整個雷區。若相應格中是地雷,則用‘
樣例輸入
3 3
*??
???
?*?
樣例輸出
*10
221
1*1
Accepted程式碼
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
char[][] a=new char[101][101];
int[] X=new int[]{-1,-1,-1, 0,1,1,1,0};
int[] Y=new int[]{-1,0,1,1,1,0,-1,-1};
int s,r,c;
int n=in.nextInt();
int m=in.nextInt();
for(int i=0;i<n;i++) {
String str=in.next();
a[i]=str.toCharArray();
}
for(int i=0;i<n;i++) {
for(int j=0;j< m;j++) {
if(a[i][j]=='*')
System.out.print('*');
else {
s=0;
for(int k=0;k<8;k++) {
r=i+X[k];
c=j+Y[k];
int tmp;
if(r>=0 && r<n && c>=0 && c<m &&a[r][c]=='*') tmp=1;
else tmp=0;
s+=tmp;
}
System.out.print(s);
}
}
System.out.println();
}
in.close();
}
}