题意:赤裸裸的搜索。 直接代码: #include <iostream> using namespace std; char a[101][101]; int m,n; void dfs(int s1,int s2) { a[s1][s2]='.'; int i,j,x1,x2; for(i = -1 ; i<=1;i++) { for(j = -1 ;j<=1;j++) { x1=s1+i; x2=s2+j; if( x1>=1 &&x1<=n && x2>=1 &&x2<=m ) if(a[x1][x2]=='W') { dfs(x1,x2); } } } } int main() { int i,j; int out=0; while(cin>>n>>m) { out=0; for(i = 1;i <= n; i++) for(j =1;j<=m;j++) cin>>a[i][j]; for(i = 1;i <= n;i++) for(j =1 ;j <=m ;j++) { if(a[i][j]=='W') { out++; dfs(i,j); } } cout<<out<<endl; } return 0; }