一道比较简单的DFS搜索题。
#include <stdio.h>
char z[107][107];
int m,n;
int ss(int x,int y)
{
int xx,yy;
z[x][y]='1';
for (int e=-1;e<2;e++)
for (int f=-1;f<2;f++)
{
xx=x+e;
yy=y+f;
if (xx<0||xx>=m||yy<0||yy>=n||z[xx][yy]!='@')
continue;
ss(xx,yy);
}
}
int main()
{
int count=0;
while (scanf("%d%d",&m,&n))
{
if (m==0&&n==0)break;
for (int a=0;a<m;a++)
scanf("%s",z+a);
for (int c=0;c<m;c++)
for (int d=0;d<n;d++)
if (z[c][d]=='@')
{
count++;
ss(c,d);
}
printf("%d\n",count);
count=0;
}
return 0;
}