很水的DFS.
为什么放上来主要是为了让自己的博客有一道DFS题解,,,
1 #include<bits/stdc++.h> 2 3 using namespace std; 4 5 int a[105][105],ans,flag; 6 7 char sx; 8 9 void dfs(int x,int y){ 10 if(a[x][y]==1){ 11 flag=0; 12 a[x][y]=0; 13 dfs(x-1,y); 14 dfs(x+1,y); 15 dfs(x,y-1); 16 dfs(x,y+1); 17 dfs(x-1,y-1); 18 dfs(x+1,y-1); 19 dfs(x-1,y+1); 20 dfs(x+1,y+1); 21 22 } 23 24 } 25 26 int main(){ 27 28 int n,m; 29 ans=0; 30 scanf("%d%d",&n,&m); 31 32 for(int i=1;i<=n;i++){ 33 for(int j=1;j<=m;j++){ 34 cin>>sx; 35 if(sx=='.'){ 36 a[i][j]=0; 37 }if(sx=='W'){ 38 a[i][j]=1; 39 } 40 } 41 } 42 for(int i=1;i<=n;i++){ 43 for(int j=1;j<=m;j++){ 44 flag=1; 45 dfs(i,j); 46 if(flag==0){ 47 ans++; 48 } 49 } 50 } 51 printf("%d",ans); 52 53 return 0; 54 55 }