View Code of Problem 62

# include<stdio.h>
# include<string.h>
# include<math.h>
void f(int a[][100],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(void)
{
    int m,n,i,j;
    while(scanf("%d%d",&m,&n)!=EOF)
    {
        getchar();
        char c;
        int cnt=0,a[100][100];
        if(m==0&&n==0)
        {
            break;
        }
        for(i=0;i<m;++i)
        {
            for(j=0;j<n;++j)
            {
                scanf("%c",&c);
                a[i][j] = c - '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