#include<stdio.h> void dfs(int a[122][122],int i,int j) { a[i][j] = 0; if(a[i-1][j-1]) { dfs(a,i-1,j-1); } if(a[i-1][j]) { dfs(a,i-1,j); } if(a[i-1][j+1]) { dfs(a,i-1,j+1); } if(a[i][j+1]) { dfs(a,i,j+1); } if(a[i+1][j+1]) { dfs(a,i+1,j+1); } if(a[i+1][j]) { dfs(a,i+1,j); } if(a[i+1][j-1]) { dfs(a,i+1,j-1); } if(a[i][j-1]) dfs(a,i,j-1); } int main() { int a[122][122] = {0}; int m,n,i,j; char s[122]; while(scanf("%d %d",&m,&n) != EOF) { if(!m && !n) break; int count = 0; for(i = 1;i <= m;i++) { scanf("%s",s); for(j = 1;j <= n;j++) { a[i][j] = s[j-1] - '0'; } } for(i = 1;i <= m;i++) { for(j = 1;j <= n;j++) { if(a[i][j]) { count++; dfs(a,i,j); } } } printf("%d\n",count); } return 0; } |
Double click to view unformatted code.