80分廣搜求助

P1596 [USACO10OCT] Lake Counting S

求关 ```cpp #include<bits/stdc++.h> using namespace std; char mp[205][205]; int vis[205][205]; int n,m; int dir[8][2]={{-1,-1},{-1,0},{-1,1}, {0,-1},{0,1}, {1,-1},{1,0},{1,1}}; void dfs(int x,int y){ int fx,fy; for(int i=0;i<8;i++){ fx=x+dir[i][0]; fy=y+dir[i][1]; if(fx>=1&&fx<=n&&fy>=1&&fy<=m&&!vis[fx][fy]&&mp[fx][fy]=='W'){ vis[fx][fy]=1; dfs(fx,fy); } } } int main(){ cin>>n>>m; for(int i=1;i<=n;i++)cin>>mp[i]+1; int ans=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(vis[i][j]==0&&mp[i][j]=='W'){ vis[i][j]=1; dfs(i,j); ans++; } } } cout<<ans<<endl; return 0; }
by AlexSong @ 2023-08-16 09:17:32


@[SiriusII](/user/653100) 是超时吗?
by ZQIN_P @ 2023-08-16 09:21:30


这道题还是不建议用广搜的,容易爆栈
by ZQIN_P @ 2023-08-16 09:26:07


@[AlexSong](/user/1004299) @[planet_over_for_ever](/user/638459) 謝謝,確實是這個問題
by _Silica_ @ 2023-08-16 09:52:32


|