简单的搜索!
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
using namespace std;
int n,m;
char v[105][105];
int dir[8][2]={-1,0,1,0,0,-1,0,1,-1,-1,-1,1,1,-1,1,1};
void dfs(int x,int y)
{
int i,l,c;
for(i=0;i<8;i++)
{
l=x+dir[i][0];
c=y+dir[i][1];
if(l<0||c<0||l>m-1||c>n-1||v[l][c]=='*')
{
continue;
}
v[l][c]='*';
dfs(l,c);
}
}
int main()
{
int i,j,count;
while(scanf("%d%d",&m,&n),m||n)
{
getchar();
count=0;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%c",&v[i][j]);
}
getchar();
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(v[i][j]=='@')
{
v[i][j]='*';
dfs(i,j);
count++;
}
}
}
printf("%d\n",count);
}
return 0;
}