View Code of Problem 62

#include <stdio.h>

void f(char a[122][122], int i, int j) {
    a[i][j] = '0';
    if (a[i + 1][j] == '1')
        f(a, i, j);
    if (a[i + 1][j - 1] == '1')
        f(a, i + 1, j - 1);
    if (a[i + 1][j + 1] == '1')
        f(a, i + 1, j + 1);
    if (a[i][j - 1] == '1')
        f(a, i, j - 1);
    if (a[i][j + 1] == '1')
        f(a, i, j + 1);
    if (a[i - 1][j] == '1')
        f(a, i - 1, j);
    if (a[i - 1][j - 1] == '1')
        f(a, i - 1, j - 1);
    if (a[i - 1][j + 1] == '1')
        f(a, i - 1, j + 1);
}
int main() {
    int n, m;
    while (~scanf("%d%d", &n, &m) && n && m) {
        getchar();
        char a[122][122];
        for (int i = 1; i <= n; i++){
            for (int j = 1; j <= m; j++)
                scanf("%c", &a[i][j]);
            getchar();
        }
        int sum = 0;
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= m; j++)
                if (a[i][j] == '1') {
                    f(a, i, j);
                    sum++;
                }
        printf("%d\n",sum);
    }
    return 0;
}

Double click to view unformatted code.


Back to problem 62