求大佬看看

P1596 [USACO10OCT] Lake Counting S

#include<bits/stdc++.h> using namespace std; const int maxn=100+5; int m,n,ans=0; char a[maxn][maxn]; int dx[9]={0,0, 0,1, 1,1,-1,-1,-1}; int dy[9]={0,1,-1,0,-1,1, 0, 1,-1}; int read() { int x=0; char ch=getchar(); while(ch<'0' || ch>'9') ch=getchar(); while(ch>='0' && ch<='9') { x=10*x+ch-'0'; ch=getchar(); } return x; } void init() { freopen("input.txt","r",stdin); } void readdata() { n=read(); m=read(); for(int i=1;i<=n;i++) scanf("%s",a[i]); } void dfs(int x,int y) { if(a[x][y]!='.') { a[x][y]='.'; for(int i=1;i<=8;i++) { int x2=x+dx[i]; int y2=y+dy[i]; if(x2<1 || x2>n || y2<1 || y2>m) continue; dfs(x2,y2); } } } void work() { for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(a[i][j]=='W') { dfs(i,j); ans++; } } } printf("%d",ans); } int main() { init(); readdata(); work(); return 0; }
by 风说我活了 @ 2019-01-19 10:50:40


[Markdown](https://www.luogu.org/wiki/show?name=%E5%B8%AE%E5%8A%A9%EF%BC%9Amarkdown)
by std_DFS @ 2019-01-19 11:06:53


```c #include<bits/stdc++.h> using namespace std; const int maxn=100+5; int m,n,ans=0; char a[maxn][maxn]; int vis[maxn][maxn]; int dx[9]={0,0, 0,1, 1,1,-1,-1,-1}; int dy[9]={0,1,-1,0,-1,1, 0, 1,-1}; int read() { int x=0; char ch=getchar(); while(ch<'0' || ch>'9') ch=getchar(); while(ch>='0' && ch<='9') { x=10*x+ch-'0'; ch=getchar(); } return x; } void init() { freopen("input.txt","r",stdin); } void readdata() { memset(vis,0,sizeof(vis)); n=read(); m=read(); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) scanf("%c",&a[i][j]); } } void dfs(int x,int y) { if(a[x][y]!='.') { a[x][y]='.'; for(int i=1;i<=8;i++) { int x2=x+dx[i]; int y2=y+dy[i]; if(x2<1 || x2>n || y2<1 || y2>m) continue; dfs(x2,y2); } } } void work() { for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(a[i][j]=='W') { dfs(i,j); ans++; } } } printf("%d",ans); } int main() { init(); readdata(); work(); return 0; } ```
by 风说我活了 @ 2019-01-19 11:26:51


|