View Code of Problem 62

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

int map[100][100],vis[100][100];
int m,n;
int dir[8][2]={{-1,0},{1,0},{0,-1},{0,1},{-1,-1},{1,1},{-1,1},{1,-1}};
int fit(int x,int y)
{
    if(x>=0&&x<n)
        if(y>=0&&y<m) return 1;
    return 0;
}
int fun(int x,int y)
{
    int nowx,nowy,tempx,tempy;
    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))
    {
        int i,j,sum;
        getchar();
        sum=0;
        for(i=0;i<m;i++)
        {
            for(j=0;j<n;j++)
            {
                scanf("%1d",&map[i][j]);
                vis[i][j]=0;
                
            }
            getchar();
            
        }
        
        for(i=0;i<m;i++)
            for(j=0;j<n;j++)
            {
                if(map[i][j]==1&&vis[i][j]==0)
                    sum=sum+fun(j,i);
            }
        printf("%d\n",sum);
        
    }
    return 0;
}

Double click to view unformatted code.


Back to problem 62