View Code of Problem 62

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


Back to problem 62