View Code of Problem 62

#include<stdio.h>
void ToZero(char arr[123][123], int i, int j){
	if(arr[i][j] == 0){
		return ;
	} else {
		arr[i][j] = 0;
		ToZero(arr, i + 1, j + 1);
		ToZero(arr, i + 1, j - 1);
		ToZero(arr, i - 1, j + 1);
		ToZero(arr, i - 1, j - 1);
		ToZero(arr, i - 1, j);
		ToZero(arr, i + 1, j);
		ToZero(arr, i, j + 1);
		ToZero(arr, i, j - 1);
	}
}
int main(){
	int m, n;
	while(~scanf("%d%d", &m, &n)){
		if(m == 0 && n == 0){
			break;
		}
		getchar();
		char arr[123][123] = {0};
		for(int i = 1; i <= m; i ++){
			for(int j = 1; j <= n; j ++){
				scanf("%c", &arr[i][j]);
				arr[i][j] -= '0';
			}
			getchar();
		}
		int sum = 0;
		for(int i = 1; i <= m; i ++){
			for(int j = 1; j <= n; j ++){
				if(arr[i][j] == 1){
					sum ++;
					ToZero(arr, i, j);
				}
			}
		}
		printf("%d\n", sum);
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 62