代码
#include<cstdio>
using namespace std;
const int dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};
int n=0,ans=0;
bool vis[100][201]={};
char mp[100][201]={};
void get(char *str)
{
char c='\n';
while(c=='\n'||c=='\r')c=getchar();
while(c!='\n'&&c!='\r')
{
*str=c;
str++;
c=getchar();
}
}
void dfs(int x,int y,int d=0)
{
vis[x][y]=true;
for(int i=0;i<4;i++)
{
int nx=x+dx[i],ny=y+dy[i];
if(nx<0||nx>=n||ny<0||ny>199)continue;
if(vis[nx][ny]||mp[nx][ny]<'a'||mp[nx][ny]>'z')continue;
dfs(nx,ny,d+1);
}
}
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
{
get(mp[i]);
}
for(int i=0;i<n;i++)
{
for(int j=0;mp[i][j];j++)
{
if(!vis[i][j]&&mp[i][j]>='a'&&mp[i][j]<='z')
{
dfs(i,j);
ans++;
}
}
}
printf("%d\n",ans);
return 0;
}