题目就不多说了 简单的深度优先搜索 看代码
#include <iostream>
#define MAX_N 100
using namespace std;
char Map[MAX_N][MAX_N];
int dir[8][2] = {{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1},{1,0},{1,1}};
void dfs(int i,int j)
{
if(Map[i][j] == '.')
{
return ;
}
Map[i][j] = '.';
int k;
for(k=0;k<8;k++)
{
dfs(i + dir[k][0], j + dir[k][1]);
}
}
int main()
{
int n,m;
char in;
cin>>n>>m;
int i,j;
for(i=0;i<=m+1;i++)
{
Map[0][i] = '.';
Map[n+1][i]= '.';
}
for(i=1;i<=n;i++)
{
Map[i][0] = '.';
Map[i][m+1] = '.';
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
cin >> in;
Map[i][j] = in;
}
int sum = 0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(Map[i][j] != '.')
{
dfs(i,j);
sum++;
}
}
cout<<sum<<endl;
return 0;
}