6_12油田uva572
题目
洛谷题目链接
代码及分析
#include<cstdio>
#include<cstring>
const int MAXN = 100+5;
char pic[MAXN][MAXN];
int m,n,idx[MAXN][MAXN];
void dfs(int r,int c,int id){
if(r<0 ||r>=m || c<0 || c>=n)return;
if(idx[r][c] > 0 || pic[r][c] != '@')return;
idx[r][c] = id;
for(int dr = -1;dr<=1;dr++)
for(int dc = -1;dc <= 1;dc++)
if(dr != 0 || dc != 0)dfs(r+dr,c+dc,id);
}
int main(){
while(scanf("%d %d",&m,&n) == 2 && m && n){
for(int i=0;i<m;i++){
scanf("%s",pic[i]);
}
memset(idx,0,sizeof(idx));
int cnt = 0;
for(int i = 0;i<m;i++)
for(int j = 0;j<n;j++)
if(idx[i][j] == 0 && pic[i][j] == '@')dfs(i,j,++cnt);
printf("%d\n",cnt);
}
return 0;
}