0
点赞
收藏
分享

微信扫一扫

UVa10189 Minesweeper


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 nd where are all the mines within a M N eld. 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 ollowing 4 4 eld with 2 mines (which are represented by an `*’ character):

*...
....
.*..
....
1
2
3
4
If we would represent the same eld 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. 
Input 
The input will consist of an arbitrary number of elds. The rst line of each eld contains two integers n and m (0 < n; m 100) which stands for the number of lines and columns of the eld respectively. The next n lines contains exactly m characters and represent the eld. 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 rst eld line where n = m = 0 represents the end of input and should not be processed. 
Output 
For each eld, you must print the following message in a line alone: 
Field #x: 
Where x stands for the number of the eld (starting from 1). The next n lines should contain the eld with the `.’ characters replaced by the number of adjacent mines to that square. There must be an empty line between eld outputs.

Sample Input
4 4
*...
....
.*..
....
3 5
**...
.....
.*...
0 0
1
2
3
4
5
6
7
8
9
10
11
Sample Output
Field #1:
*100
2210
1*10
1110
Field #2:
**100
33200
1*100

水题:模拟就行

注意边界判定条件和矩阵之间有空格(且大于1)

 

import java.io.BufferedInputStream;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
//Scanner in = new Scanner (new BufferedInputStream(System.in));
Scanner in = new Scanner(new BufferedInputStream(System.in));
int kase=0;
while(true)
{
kase++;
int n=in.nextInt();
int m=in.nextInt();
if(n==0&&m==0) break;
in.nextLine();
char [][] a=new char [105][105];
char [][] b=new char [105][105];
for(int i=0;i<n;i++)
{
a[i]=new char[105];
String s=in.next();
a[i]=s.toCharArray();
}
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
//System.out.println(i+" "+j);
if(a[i][j]=='*')
{
for(int k=i-1;k<=i+1;k++)
for(int t=j-1;t<=j+1;t++)
{
if(k<n&&k>=0&&t<m&&t>=0)
{
if(a[k][t]=='*')
continue;
if(a[k][t]=='.')
{
a[k][t]='1';
}
else
{
a[k][t]=(char)((int)(a[k][t])+1);
}
}
}
}
}
if (kase > 1) System.out.println();
System.out.println("Field #"+kase+":");
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
if(a[i][j]=='.')
System.out.print('0');
else
System.out.print(a[i][j]);
System.out.println();
}

}


}
}

 

举报

相关推荐

0 条评论