dfs水过、、
没注意结果为1的情况,WA了几次...⊙﹏⊙b汗
#include<iostream>
#include<cstdio>
using namespace std;
int sum,m,n;
char map[22][22];
int dir[4][2]={1,0,0,1,-1,0,0,-1};
void dfs(int x,int y){
int i,ex,ey;
for(i=0;i<4;i++){
ex=x+dir[i][0];
ey=y+dir[i][1];
if(ex>=0&&ex<n&&ey>=0&&ey<m&&map[ex][ey]!='#'){
if(map[ex][ey]!='@')
sum++;
map[ex][ey]='#';
dfs(ex,ey);
}
}
return ;
}
int main(){
int x,y;
while(cin>>m>>n,n||m){
for(int i=0;i<n;i++){
scanf("%s",map[i]);
for(int j=0;j<m;j++)
if(map[i][j]=='@'){
x=i,y=j;
}
}
sum=1;
dfs(x,y);
cout<<sum<<endl;
}
return 0;
}