#include<bits/stdc++.h>
using namespace std;
int w,h,num;
bool st[25][25];
char a[25][25];
int dx[4]={-1,0,0,1};
int dy[4]={0,-1,1,0};
void dfs(int x,int y)
{
for(int i=0;i<4;i++)
{
int xx=x+dx[i];
int yy=y+dy[i];
if(a[xx][yy]=='.')
{
if(!st[xx][yy])
num++;
st[xx][yy]=1;
dfs(xx,yy);
}
}
}
int main()
{
cin>>w>>h;
int b,c;
for(int i=1;i<=w;i++)
{
for(int j=1;j<=h;j++)
{
cin>>a[i][j];
if(a[i][j]=='@')
{
b=i,c=j;
}
}
}
dfs(b,c);
cout<<num+1;
}
题目不是说可以重复走过但是不重复计数吗,这样写就MLE了,但是把判断是否走过的st[i]放在if(a[xx][yy]=='.')里面也只过了一个点,请求大佬指教