题目描述
c语言flood fill 模板
样例
#include<stdio.h>
#include<string.h>
char buf[1010][1010];
int st[1010][1010];
int dx[8]={-1,0,1,0,1,-1,1,-1};
int dy[8]={0,-1,0,1,1,-1,-1,1};
void dfs(int st[1010][1010],char buf[1010][1010],int n,int m,int x,int y){
int i;
st[x][y]=1;//表示已经遍历过
for(i=0;i<8;i++){
int a=x+dx[i],b=y+dy[i];
if(a>=0&&a<n&&b>=0&&b<m&&buf[a][b]=='W'&&st[a][b]==0)
dfs(st,buf,n,m,a,b);
}
}
int main(void){
int n,m;
int i,j;
int num=0;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
scanf("%s",buf[i]);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(buf[i][j]=='W'&&st[i][j]==0){
num++;
dfs(st,buf,n,m,i,j);
}
printf("%d",num);
return 0;
}
'''