简单,因为数据小,可以直接全搜,每搜到一个池塘就消除它,计数就行了。
#include<bits/stdc++.h>
using namespace std;
int ha[101][101];
int l,m,n;
void find(int a,int b){
if(!ha[a][b]) return;
if(a<1||a>n||b<1||b>m) return;
ha[a][b]=0;
find(a-1,b-1);
find(a-1,b);
find(a-1,b+1);
find(a,b-1);
find(a,b+1);
find(a+1,b-1);
find(a+1,b);
find(a+1,b+1);
}
int main(){
scanf("%d%d",&n,&m);
for(int z=1;z<=n;++z){
getchar();
for(int y=1;y<=m;++y){
char a;
scanf("%c",&a);
if(a==‘W’) ha[z][y]=1;
else ha[z][y]=0;
}
}
for(int z=1;z<=n;++z)
for(int y=1;y<=m;++y)
if(ha[z][y]){
find(z,y);
++l;
}
printf("%d",l);
}
作业之考试1
最新推荐文章于 2021-03-05 03:34:07 发布