水题
#include <iostream>
#include <cstdio>
#define N 103
using namespace std;
char w[N][N];
int n,m;
void dfs(int x,int y)
{
w[x][y]='.';//把现在所在位置替换为 .
for(int dx=-1;dx<=1;dx++)
{
for(int dy=-1;dy<=1;dy++)//向四周围遍历
{
int nx=x+dx;
int ny=y+dy;
if(0<=nx && nx<n && 0<=ny && ny<m && w[nx][ny]=='@') dfs(nx,ny);
}
}
return ;
}
int main()
{
int i,j;
while(~scanf("%d%d",&n,&m) && (n!=0 && m!=0))
{
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cin>>w[i][j];
}
}
int counter=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(w[i][j]=='@')
{
dfs(i,j);
counter++;
}
}
}
cout<<counter<<endl;
}
return 0;
}