样例输出是对的,只有10分,求大佬帮忙看看是哪里错了

P1683 入门

@[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


|