View Code of Problem 62

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


char a[101][101];
int m,n,q=0;

void yiqun(int h,int i)
{ 
	if(h-1>=0)
	if(a[h-1][i]=='1')
	{
		a[h-1][i]='\0';
		yiqun(h-1,i);
	}
	if(a[h+1][i]=='1')
	{
		a[h+1][i]='\0';
		yiqun(h+1,i);
	}
	if(h-1>=0)
	if(a[h-1][i+1]=='1')
	{
		a[h-1][i+1]='\0';
		yiqun(h-1,i+1);
	}
	if(h-1>=0&&i-1>=0)
	if(a[h-1][i-1]=='1')
	{
		a[h-1][i-1]='\0';
		yiqun(h-1,i-1);
	}
	if(a[h+1][i+1]=='1')
	{
		a[h+1][i+1]='\0';
		yiqun(h+1,i+1);
	}
	if(i-1>=0)
	if(a[h+1][i-1]=='1')
	{
		a[h+1][i-1]='\0';
		yiqun(h+1,i-1);
	}
	if(a[h][i+1]=='1')
	{
		a[h][i+1]='\0';
		yiqun(h,i+1);
	}
	if(i-1>=0) 
	if(a[h][i-1]=='1')
	{
		a[h][i-1]='\0';
		yiqun(h,i-1);
	}
}

void shuyang(int x)
{
  int i,h=0;
  for(i=0;i<m*n;i++)
  {  if(h==m) break;
	  if(a[h][i]=='1')
	   {
		   yiqun(h,i);
		   q++;
	  }
	  if(i==n-1)
	   {
		h++;
	    i=-1;
	   }
  }
}

int main()
{
	int i,h=0;
	
	while(scanf("%d%d",&m,&n),m!=0&&n!=0)
  {
	getchar();
	  for(i=0;i<m;i++)//输入矩阵
	{  
	 gets(a[i]);
	   }
	 
	
	shuyang(q);
	printf("%d\n",q);
	

    q=h=0;
	}
}

Double click to view unformatted code.


Back to problem 62