点击打开链接
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#include<string.h>
#include<cstring>
#include<string>
#include<math.h>
using namespace std;
char Arr[25][25];
int sum=0,xx=0,yy=0,W=0,H=0;
int visit[25][25];
void Search()
{
int i=0,j=0;
for(i=0;i<H;i++){
for(j=0;j<W;j++){
if(Arr[i][j]=='@'){
xx=i;yy=j;return;
}
}
}
}
void dfs(int m,int n)
{
if(m<0||m>=H||n<0||n>=W||Arr[m][n]=='#') return;
//printf("%d %d\n",m,n);
if(Arr[m-1][n]=='.'&&visit[m-1][n]!=1){
sum+=1;visit[m-1][n]=1;
dfs(m-1,n);
}
if(Arr[m+1][n]=='.'&&visit[m+1][n]!=1){
sum+=1;visit[m+1][n]=1;
dfs(m+1,n);
}
if(Arr[m][n-1]=='.'&&visit[m][n-1]!=1){
sum+=1;visit[m][n-1]=1;
dfs(m,n-1);
}
if(Arr[m][n+1]=='.'&&visit[m][n+1]!=1){
sum+=1;visit[m][n+1]=1;
dfs(m,n+1);
}
}
int main()
{
int i=0,j=0;
while(scanf("%d %d",&W,&H)){
memset(Arr,0,sizeof(Arr));
if(W==0&&H==0) break;
for(i=0;i<H;i++){
scanf("%s",Arr[i]);
}
Search();
sum=1;
memset(visit,0,sizeof(visit));
visit[xx][yy]=1;
dfs(xx,yy);
printf("%d\n",sum);
}
return 0;
}