#include<stdio.h>
int dir[4][2]={{1,0},{0,-1},{0,1},{-1,0}};
char maze[25][25];
int num,m,n;
void DFS(int x,int y)
{
num++;
maze[x][y]='#';//防止重复记录
for(int k=0;k<4;k++)
{
int X=x+dir[k][0],Y=y+dir[k][1];
if(X>=0&&Y>=0&&X<m&&Y<n&&maze[X][Y]=='.')
{
DFS(X,Y);
}
}
return ;
}
int main()
{
int i,j,p,q;
while(scanf("%d%d",&n,&m)&&n>0&&m>0)
{
num=0;
getchar();//吃掉回车符
for(i=0;i<m;i++)
scanf("%s",&maze[i]);//注意对字符串的处理
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(maze[i][j]=='@')
{
maze[i][j]='#';
DFS(i,j);
break;
}
printf("%d\n",num);
}
return 0;
}
点击打开链接