杭电1241
Sample Input
1 1
*
3 5
*@*@*
**@**
*@*@*
1 8
@@****@*
5 5
****@
*@@*@
*@**@
@@@*@
@@**@
0 0
Sample Output
0
1
2
2

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 }