View Code of Problem 62

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

void f(int a[200][200],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)&&m!=0&&n!=0)
	{
	    getchar();  //!
		int a[200][200];
		char x;
		int i,j;
		int cnt=0;
		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);
					cnt++;
				}
			}
		}
		printf("%d\n",cnt);
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 62