View Code of Problem 62

#include<stdio.h>

void dfs(int a[122][122],int i,int j)
{
    a[i][j] = 0;
    if(a[i-1][j-1])
    {
        dfs(a,i-1,j-1);
    }
    if(a[i-1][j])
    {
        dfs(a,i-1,j);
    }
    if(a[i-1][j+1])
    {
        dfs(a,i-1,j+1);
    }
    if(a[i][j+1])
    {
        dfs(a,i,j+1);
    }
    if(a[i+1][j+1])
    {
        dfs(a,i+1,j+1);
    }
    if(a[i+1][j])
    {
        dfs(a,i+1,j);
    }
    if(a[i+1][j-1])
    {
        dfs(a,i+1,j-1);
    }
    if(a[i][j-1])
        dfs(a,i,j-1);
}

int main()
{
	int a[122][122] = {0};
	int m,n,i,j;
	char s[122];
	while(scanf("%d %d",&m,&n) != EOF)
    {
        if(!m && !n)
            break;
        int count = 0;
        for(i = 1;i <= m;i++)
        {
            scanf("%s",s);
            for(j = 1;j <= n;j++)
            {

               a[i][j] = s[j-1] - '0';
            }
        }
        for(i = 1;i <= m;i++)
        {
            for(j = 1;j <= n;j++)
            {
                if(a[i][j])
                {

                    count++;
                    dfs(a,i,j);
                }
            }
        }
        printf("%d\n",count);
    }

    return 0;
}

Double click to view unformatted code.


Back to problem 62