#include <iostream> using namespace std; void find(char matrix[120][120], int i, int j) { matrix[i][j] = '0'; if (matrix[i - 1][j - 1] == '1') find(matrix, i - 1, j - 1); if (matrix[i - 1][j] == '1') find(matrix, i - 1, j); if (matrix[i][j - 1] == '1') find(matrix, i, j - 1); if (matrix[i + 1][j + 1] == '1') find(matrix, i + 1, j + 1); if (matrix[i + 1][j] == '1') find(matrix, i + 1, j); if (matrix[i + 1][j - 1] == '1') find(matrix, i + 1, j - 1); if (matrix[i - 1][j + 1] == '1') find(matrix, i - 1, j + 1); if (matrix[i][j + 1] == '1') find(matrix, i, j + 1); } int main() { int m, n; while (cin >> m >> n && n != 0 && m != 0) { if(m==0&&n==0) break; int count = 0; char matrix[120][120]; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cin>>matrix[i][j]; } } for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (matrix[i][j] == '1') { count++; find(matrix, i, j); } } } cout << count << endl; } } |
Double click to view unformatted code.