Oil Deposits

杭电1241

Sample Input
1 1
*
3 5
*@*@*
**@**
*@*@*
1 8
@@****@*
5 5
****@
*@@*@
*@**@
@@@*@
@@**@
0 0
 
Sample Output
0
1
2
2
View Code
 1 //杭电1241
 2 
 3 #include<stdio.h>
 4 #include<string.h>
 5 #define N 120
 6 char map[N][N];
 7 int m,n;
 8 int b[8][2]={1,0, -1,0, 0,1, 0,-1, 1,1, -1,1, 1,-1,-1,-1};
 9 
10 void bfs(int x,int y)
11 {
12     int nextx,nexty;
13     int i;
14     for(i=0;i<8;i++)
15     {
16         nextx=x+b[i][0];
17         nexty=y+b[i][1];
18         if(nextx>=0&&nexty>=0&&nextx<n&&nexty<m&&map[nextx][nexty]=='@')
19         {
20             map[nextx][nexty]='*';
21             bfs(nextx,nexty);
22         }
23     }
24 }
25 
26 int main()
27 {
28     int i,j,c;
29     while(scanf("%d%d",&n,&m),n||m)
30     {
31         c=0;
32         memset(map,0,sizeof(map));
33         for(i=0;i<n;i++)
34             scanf("%s",map[i]);
35         for(i=0;i<n;i++)
36             for(j=0;j<m;j++)
37             {
38                 if(map[i][j]=='@')
39                 {
40                     c++;
41                     bfs(i,j);
42                 }
43             }
44             printf("%d\n",c);
45     }
46     return 0;
47 }
原文地址:https://www.cnblogs.com/zlyblog/p/2613246.html