View Code of Problem 62

#include<stdio.h> 
#include<string.h>
#include<math.h>
void f(int a[120][120],int m,int n){
	a[m][n]=0;
	if(a[m+1][n]==1)
	    f(a,m+1,n);
	if(a[m-1][n]==1)
	    f(a,m-1,n);
	if(a[m][n+1]==1)
	    f(a,m,n+1);
	if(a[m][n-1]==1)
	    f(a,m,n-1);
	if(a[m+1][n+1]==1)
	    f(a,m+1,n+1);
	if(a[m-1][n-1]==1)
	    f(a,m-1,n-1);
	if(a[m+1][n-1]==1)
	    f(a,m+1,n-1);
	if(a[m-1][n+1]==1)
	    f(a,m-1,n+1);
	
}
int main(){ 
    char x;
    int m,n,i,j;
    while(scanf("%d%d",&m,&n)!=EOF){
    	getchar();
    	int a[120][120];
    	int count=0;
    	if(m==0&&n==0) break;
    	for(i=0;i<m;i++){
    		for(j=0;j<n;j++){
    			scanf("%c",&x);
    			a[i][j]=x-'0';
			}
			getchar();
		}
		for(i=0;i<m;i++){
			for(j=0;j<n;j++){
				if(a[i][j]==1){
					f(a,i,j);
					++count;
				}
			}
		}
		printf("%d\n",count);
	}
    
    return 0; 
     
}

Double click to view unformatted code.


Back to problem 62