@[unbonjourable](/user/561682)
## AC代码
```cpp
#include <iostream>
#include <cstring>
using namespace std;
int m,n;
int ans=1;//提前设置ans的值为1,后面不用ans++
char g[30][30];
bool st[30][30];
int dx[]={-1,0,1,0}; int dy[]={0,1,0,-1};
void dfs(int x,int y)
{
for(int i=0;i<4;i++)
{
int a=x+dx[i]; int b=y+dy[i];
if(a<0 || a>=m || b<0 || b>=n ) continue;
if(g[a][b]!='.') continue;
if (st[a][b]) continue;
st[a][b]=true;
ans++;
dfs(a,b);
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++)
scanf("%s",g[i]);
int h=0,l=0;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(g[i][j]=='@'){
st[i][j]=true;
h=i,l=j;//不能在循环里搜索,要先记录,在循环外搜索
}
}
}
dfs(h,l);//搜索
printf("%d\n",ans);
return 0;
}
```
by Yangbowen0108 @ 2023-04-03 21:34:31
@[Yangbowen0108](/user/702258) 谢谢 我看到你第二个注释 意识if那没加大括号 变成在循环里面dfs了 加上大括号就对了
by unbonjourable @ 2023-04-03 21:41:24
@[unbonjourable](/user/561682) 不客气
by Yangbowen0108 @ 2023-04-03 21:41:55