题解
dfs求水坑。水题。别忘了scanf(“%c”)吃回车。
AC代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #include <iostream> #include <algorithm> #include <cstring> #include <cmath> #include <complex> #include <cstdio> using namespace std; #define ll long long char mp[105][105]; int n,m,ans=0; void dfs(int x,int y){ mp[x][y]='.'; for(int i=-1 ;i<=1 ;i++){ for(int j=-1 ;j<=1 ;j++){ int xx=i+x,yy=j+y; if( mp[xx][yy]=='W' && xx>=1 && xx<=n && yy>=1 && yy<=m) dfs(xx,yy); } } } int main(){ cin>>n>>m; for(int i=1 ; i<=n ;i++){ getchar(); for(int j=1 ; j<=m ;j++) scanf("%c",&mp[i][j]); } for(int i=1 ; i<=n ; i++) for(int j=1 ;j<=m ; j++) if(mp[i][j]=='W'){ dfs(i,j); ans++; } printf("%d\n",ans); return 0; }
|