#include<iostream>
using namespace std;
int n,m;
char map[105][105];
int place[8][2]=
{
{1,0},
{1,1},
{1,-1},
{0,-1},
{0,1},
{-1,0},
{-1,1},
{-1,-1}
};//用于搜索八个方位
void dfs(int i,int j)
{
map[i][j]='*';
for(int k=0;k<8;k++)
{
int x=i+place[k][0];
int y=j+place[k][1];
if (x>=1&&x<=n&&y>=1&&y<=m&&map[x][y]=='@')
dfs(x,y);//若八个方位中有油田,以该方位为起始点进行新的搜索
}
return ;//若八个方位中没有油田,停止搜索
}
int main()
{
while(cin>>n>>m&&(n||m))
{
int sum=0;
getchar();
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>map[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(map[i][j]=='@')
{
dfs(i,j);
sum++;//停止搜索后 获得的油田数加1
}
cout<<sum<<endl;
}
return 0;
}
01-27
09-04
404