#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.