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