1.题目A - Lake Counting
题目
2. 思路:遍历整个所有空间,每找到一个是水地的就往八个方向搜索,把他 们变为旱地
3. 代码
//AC代码
#include <stdio.h>
void lake(int s1, int s2, int s3, int s4, char b[][101])
{
int lakex,lakey;
if(s1<0||s2<0||s1>=s3||s2>=s4)
return ;
for(lakex=-1; lakex<2; lakex++){
for(lakey=-1; lakey<2; lakey++){
s1+=lakex;
s2+=lakey;
if(s1>=0&&s2>=0&&s1<s3&&s2<s4&&b[s1][s2]=='W'){
b[s1][s2]='.';
lake(s1,s2,s3,s4,b);
}
s1-=lakex;
s2-=lakey;
}
}
}
int main()
{
int n,m;
int cnt;
int ni,mi;
char a[101][101];
for(ni=0; ni<101; ni++){
for(mi=0; mi<101; mi++){
a[ni][mi]=0;
}
}
scanf("%d%d",&n,&m);
for(ni=0; ni<n; ni++){
scanf("%s",a[ni]);
}
for(ni=0; ni<n; ni++){
for(mi=0; mi<m; mi++){
if(a[ni][mi]=='.')
continue ;
lake(ni,mi,n,m,a);
//printf("看看看变化了,快来看,快来看\n");
//for(int x=0; x<n; x++){
// printf("%s\n",a[x]);
//}
cnt++;
}
}
printf("%d",cnt);
return 0;
}