View Code of Problem 62

#include <stdio.h>

void group(int arr[][130],int i,int j)
{
    arr[i][j] = 0;
    int m,n;
    for(m = i - 1;m <= i + 1;m++)
    {
        for(n = j - 1; n <= j + 1;n++)
        {
            if(arr[m][n] == 1)
                group(arr,m,n);
        }
    }
}

int main(void)
{
    int m,n,i,j,arr[130][130] = {0};
    char s[120];

    while(scanf("%d%d",&m,&n) != EOF && m != 0 && n != 0)
    {
        int index = 0;
        for(i = 1;i <= m;i++)
        {
            scanf("%s",&s);
            for(j = 1;j <= n;j++)
            {
                arr[i][j] = s[j - 1] - '0' + 0;
            }
        }
        for(i = 1;i <= m;i++)
        {
            for(j = 1;j <= n;j++)
            {
                if(arr[i][j] == 1)
                {
                    group(arr,i,j);
                    index++;
                }
            }
        }
        printf("%d\n",index);
    }
    return 0;

}

Double click to view unformatted code.


Back to problem 62