[问题描述]
Have you ever played Minesweeper? It’s a cute little game which comes within a certain Operating
System which name we can’t really remember. Well, the goal of the game is to find where are all the mines within a M × N field. To help you, the game shows a number in a square which tells you how many mines there are adjacent to that square. For instance, supose the following 4 × 4 field with 2 mines (which are represented by an ‘*’ character):
*...
....
.*..
....
If we would represent the same field placing the hint numbers described above, we would end up
with:
*100
2210
1*10
1110
As you may have already noticed, each square may have at most 8 adjacent squares.
[输入]
The input will consist of an arbitrary number of fields. The first line of each field contains two integers
n and m (0 < n, m ≤ 100) which stands for the number of lines and columns of the field respectively.
The next n lines contains exactly m characters and represent the field.
Each safe square is represented by an ‘.’ character (without the quotes) and each mine square
is represented by an ‘*’ character (also without the quotes). The first field line where n = m = 0
represents the end of input and should not be processed.
[输出]
对于每对整数 i 和 j,按原来的顺序输出 i 和 j,然后输出二者之间的整数中的最大循环节长度。这三个整数应该用单个空格隔开,且在同一行输出。对于读入的每一组数据,在输出中应位于单独的一行。
[样例输入]
4 4
*...
....
.*..
....
3 5
**...
.....
.*...
0 0
[样例输出]
Field #1:
*100
2210
1*10
1110
Field #2:
**100
33200
1*100
*/
public class LanQiao02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
int count=1;
while(true){
int m= scan.nextInt();
int n= scan.nextInt();
scan.nextLine();
if(n==0&&m==0) break;
char [][]sl=new char[n][m];
for(int i=0;i<n;i++) {
String s=scan.next();
char[]temp=s.toCharArray();
for(int j=0;j<m;j++) {
sl[i][j]=temp[j];
System.out.println("Fild#"+count+":");
sl(sl,n,m);
count++;
}
}
}
}
private static void sl(char[][] sl, int n, int m) {
// TODO Auto-generated method stub
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
if(sl[i][j]=='*') { System.out.println("*");
continue;
}
int count=0;
// TODO Auto-generated method stub
for(int k=i-1;k<i+1;k++) {
for(int l=j-1;l<j+1;l++) {
if(k>=0&&k<n&&l>=0&&l<m&&sl[k][l]=='*') count++;
}}
}
}
}
}