红黑瓷砖,简单的dfs
# include
# include
int k,c,sx,sy;
int s[25][25],cou;
int fx[4]={-1,0,1,0};
int fy[4]={0,1,0,-1};
int dfs(int x,int y)
{
int nx,ny,i;
for(i=0;i<4;i++)
{
nx=x+fx[i];
ny=y+fy[i];
if(nx>=1 && nx<=c && ny>=1 && ny<=k)
{
if(s[nx][ny]=='.')
{
cou++;
s[nx][ny]='#';
dfs(nx,ny);
}
}
}
return 0;
}
int main()
{
int i,j;
while(scanf("%d %d",&k,&c)!=EOF)
{
if(k==0 && c==0 ) break;
getchar();
cou=1;
for(i=1;i<=c;i++)
{
for(j=1;j<=k;j++)
{
scanf("%c",&s[i][j]);
if(s[i][j]=='@')
{
sx=i;
sy=j;
}
}
getchar();
}
s[sx][sy]='#';
dfs(sx,sy);
printf("%d\n",cou);
}
return 0;
}