View Code of Problem 62

#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.


Back to problem 62