#include<stdio.h> void sweep(int i, int j, char a[][100]) { a[i][j] = 0; if (a[i - 1][j - 1] == '1') sweep(i - 1, j - 1, a); if (a[i][j - 1] == '1') sweep(i, j - 1, a); if (a[i + 1][j - 1] == '1') sweep(i + 1, j - 1, a); if (a[i + 1][j] == '1') sweep(i + 1, j, a); if (a[i + 1][j + 1] == '1') sweep(i + 1, j + 1, a); if (a[i][j + 1] == '1') sweep(i, j + 1, a); if (a[i - 1][j + 1] == '1') sweep(i - 1, j + 1, a); if (a[i - 1][j] == '1') sweep(i - 1, j, a); //return 0; } int main() { int m, n, num, i, j; char a[100][100]; while (scanf("%d%d", &m, &n) != EOF && m != 0 && n != 0) { for (i = 0; i < m; i++) scanf("%s", a[i]); num = 0; for (i = 0; i < m; i++) for (j = 0; j < n; j++) if (a[i][j] == '1') { num++; sweep(i, j, a); } printf("%d\n", num); } } |
Double click to view unformatted code.