此题链接单击这里
=================
求有多少个连续的区域,DFS的基础运用。
#include <iostream>
using namespace std;
int m,n;
char a[120][120];
//int b[120][120];
int b[8][2]={-1,-1,0,-1,1,-1,1,0,1,1,0,1,-1,1,-1,0};
void funt(int x,int y)
{
if(x<1||x>n||y<1||y>m)
return ;
for(int i=0;i<8;i++)
{
int ax=x+b[i][0];
int ay=y+b[i][1];
if(a[ax][ay]=='@')
{
a[ax][ay]='*';
funt(ax,ay);
}
}
}
int main()
{
while(cin>>n>>m&&n&&m)
{
int k=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i][j]!='*')
{
a[i][j]='@';
funt(i,j);
k++;
}
cout<<k<<endl;
}
}
有问题联系企鹅791267032
邮箱地址….wutanrong@Hotmail.com