zrq495
www.zrq495.com

很水的题,但是交了很多次都WA了,纠结啊。后来把输入输出格式该了才对。。。。

 

The Problem

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 MxN 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 4x4 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

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.

The Output

For each field, you must print the following message in a line alone:

Field #x:

Where x stands for the number of the field (starting from 1). The next n lines should contain the field with the "." characters replaced by the number of adjacent mines to that square. There must be an empty line between field outputs.

Sample Input

 

4 4
*...
....
.*..
....
3 5
**...
.....
.*...
0 0

 

Sample Output

 

Field #1:
*100
2210
1*10
1110

Field #2:
**100
33200
1*100

 1 #include<stdio.h>
 2 #include<string.h>
 3 
 4 int main()
 5 {
 6     int n, m, i, j, num=0, k, l;
 7     int s[105][105], ch;
 8     while(scanf("%d%d", &n, &m)&& (n||m))
 9     {
10         getchar();
11         if(num)
12             printf( "\n" );
13         memset(s,0,sizeof(s));
14         for (i=1; i<=n; i++)
15         {
16             for (j=1; j<=m; j++)
17             {
18                 ch = getchar();
19 
20                 if( ch == '*' )
21                 {
22                     s[i][j] = -100;
23                     for(k = -1 ; k <= 1 ; k++ )
24                         for(l = -1 ; l <= 1 ;l++ )
25                             s[i+k][j+l]++;
26                 }
27             }
28             getchar();
29         }
30         printf("Field #%d:\n", ++num);
31         for (i=1; i<=n; i++)
32         {
33             for (j=1; j<=m; j++)
34             {
35                 if (s[i][j] < 0)
36                     printf("*");
37                 else
38                     printf("%d", s[i][j]);
39             }
40             printf("\n");
41         }
42     }
43     return 0;
44 }
posted on 2012-05-19 20:08  zrq495  阅读(318)  评论(0编辑  收藏  举报