View Code of Problem 62

#include "stdio.h"
#include "math.h"
 
int map[100][100],vis[100][100];
int m,n,i,j,ly,lx,nowx,nowy,tempx,tempy,is,js;
int dir[8][2]={{-1,0},{1,0},{0,-1},{0,1},{-1,-1},{1,1},{-1,1},{1,-1}};
int sum;
int fit(int x,int y)
{
	if(x>=0&&x<n&&y<m&&y>=0) return 1;
	else return 0;
}
int fun(int x,int y)
{
	nowx=x;
	nowy=y;
    vis[y][x]=1;
    for(int i=0;i<8;i++)
	{
     tempx=x+dir[i][0];
	 tempy=y+dir[i][1];
	 if(fit(tempx,tempy)&&map[tempy][tempx]==1&&vis[tempy][tempx]==0) {
	     fun(tempx,tempy);
	 }
 
	}
	return 1;
}
int main()
{
 
    while(scanf("%d%d",&m,&n)!=EOF&&(m||n))
	{
     sum=0;
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			scanf("%1d",&map[i][j]);
			vis[i][j]=0;
		
		}
	     
	}
	
	for(is=0;is<m;is++)
		for(js=0;js<n;js++)
		{
			if(map[is][js]==1&&vis[is][js]==0) 
                  sum=sum+fun(is,js);
		}
     printf("%d\n",sum);
 
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 62