链接:点击打开链接
题意:八连通的'@'被看做一部分,问有几部分
代码:
#include <iostream>
using namespace std;
char str[105][105];
int m,n;
void dfs(int x,int y){
int i,j;
if(x<0||x>=m||y<0||y>=n||str[x][y]!='@')
return;
str[x][y]='.';
for(i=-1;i<=1;i++) //八连通模板
for(j=-1;j<=1;j++)
dfs(x+i,y+j);
}
int main(){
int i,j,sum;
while(cin>>m>>n){
if(m==0&&n==0)
break;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin>>str[i][j];
sum=0;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(str[i][j]=='@')
dfs(i,j),sum++;
cout<<sum<<endl;
}
return 0;
}