View Code of Problem 62

#include "stdio.h"
#include "math.h"
#include "string.h"

void main()
{
	void f(int i,int j,int a[][500]);
	int m,n;
	int i,j;
	int count;
	for(;scanf("%d%d",&m,&n)!=EOF;)
	{	
		int a[500][500]={0};
		if(m==0&&n==0)
			break;
		count=0;
		for(i=120;i<m+120;i++)
			for(j=120;j<n+120;j++)
				scanf("%1d",&a[i][j]);
			
			for(i=120;i<m+120;i++)
			{
				for(j=120;j<n+120;j++)
				{
					if(a[i][j]==1)
					{
						f(i,j,a);
						count++;				
					}
				}
			}
		printf("%d\n",count);
	}	
}


void f(int i,int j,int a[][500])
{
		a[i][j]=0;
		if(a[i][j+1]==1)
			f(i,j+1,a);
		if(a[i+1][j-1]==1)
			f(i+1,j-1,a);
		if(a[i+1][j]==1)
			f(i+1,j,a);				
		if(a[i+1][j+1]==1)
			f(i+1,j+1,a);
		if(a[i-1][j+1]==1)
			f(i-1,j+1,a);
		if(a[i-1][j]==1)
			f(i-1,j,a);
		if(a[i-1][j-1]==1)
			f(i-1,j-1,a);
		if(a[i][j-1]==1)
			f(i,j-1,a);
}

Double click to view unformatted code.


Back to problem 62