View Code of Problem 62

#include <stdio.h>
#include <string.h>

void f(char a[][130],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()
{
	int m,n;
	while(scanf("%d %d",&m,&n)&&n!=0&&m!=0)
	{
		char a[130][130];
		char x;
		int i,j;
		int cnt=0;
		for(i=0;i<m;i++)
		{
			scanf("%s",a[i]);
		}
		for(i=0;i<m;i++)
		{
			for(j=0;j<n;j++)
			{
				if(a[i][j]=='1')
				{
					f(a,i,j);
					cnt++;
				}
			}
		}
		printf("%d\n",cnt);
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 62