注:提交不了,不知道正确性
注:提交不了,不知道正确性
注:提交不了,不知道正确性
题意是一个果园,被三种树分成了几部分,相邻的树一样就是一个部分,求一共多少部分
简单dfs
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
char map[25][25];
int xy[][2]={{0,1},{0,-1},{1,0},{-1,0}};
void dfs(int x,int y)
{
char c=map[x][y];
map[x][y]='%';
for(int i=0;i<4;i++)
{
int dx=x+xy[i][0];
int dy=y+xy[i][1];
if(map[dx][dy]==c)
dfs(dx,dy);
}
}
int main()
{
int n,m;
int ans1,ans2,ans3;
ans1=ans2=ans3=0;
while(cin>>n>>m,n+m)
{
memset(map,0,sizeof(map));
for(int i=0;i<n;i++)
cin>>map[i];
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(map[i][j]=='@')
{
dfs(i,j);
ans1++;
}
if(map[i][j]=='#')
{
dfs(i,j);
ans2++;
}
if(map[i][j]=='*')
{
dfs(i,j);
ans3++;
}
}
}
cout<<ans1+ans2+ans3<<endl;
}
return 0;
}