View Code of Problem 62

#include<stdio.h>
char arr[120][120];
int  dfs(int i,int j,int m,int n){
	if(i>=m||j>=n||i<0||j<0){
		return 0;
	}
	if(arr[i][j]==0){
		return 0;
	}
	if(arr[i][j]==1){
		
		arr[i][j]=0;
		dfs( i, j-1, m, n);
		dfs( i+1, j, m, n);
		dfs( i, j+1, m, n);
		dfs( i-1, j, m, n);
		dfs( i-1, j-1, m, n);
		dfs( i-1, j+1, m, n);
		dfs( i+1, j-1, m, n);
		dfs( i+1, j+1, m, n);
	}
	
	return 0;
	
}
int main(){
	int n ,m;
	int i,j;
	while(~scanf("%d %d",&m,&n)&&n!=0&&m!=0){
	
		getchar();
		int count=0;
		for(i=0;i<m;i++){
			for(j=0;j<n;j++){
				scanf("%c",&arr[i][j]);
				arr[i][j]=arr[i][j]-'0';
			}
			getchar();
			
		}
	
		
		for(i=0;i<m;i++){
			for(j=0;j<n;j++){
				if(arr[i][j]){
					count++;
					dfs(i,j,m,n);
				}
			}
		}

		printf("%d\n",count);
		
		
	}
	
	
	
	
	return 0;
}

Double click to view unformatted code.


Back to problem 62