Java | Действия над двоичной матрицей

Дана бинарная матрица:

int[][] matrix = new int[][]{
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
{1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1}
{1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1}
{1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}
{1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1}
{1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}
{1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1}
{1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1}
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
};

введите сюда описание изображения

Нужно определить индексы строки и столбца левого верхнего угла каждой фигуры, выделенной жёлтым цветом (1 ↔ [2,2]; 2 ↔ [8,4]; 3 ↔[2,6]; 4 ↔ [2,10]; 5 ↔ [4,12]), и вычислить количество нулей внутри каждой фигуры, выделенной жёлтым цветом (1 ↔ 17; 2 ↔ 13; 3 ↔ 5; 4 ↔ 15; 5 ↔ 1).

Метод для поиска количества фигур, выделенных жёлтым цветом, может быть понадобится:

public static int numberOfShapes() {
        int h = matrix.length;
        int l = matrix[0].length;
        int countOfShapes = 0;
        for (int i = 0; i < h; i++)
            for (int j = 0; j < l; j++)
                if (matrix[i][j] == 0) {
                    DFS(i, j);
                    countOfShapes++;
                }
        return countOfShapes;
    }

    public static void DFS(int row, int col) {
        int H = matrix.length;
        int L = matrix[0].length;
        if (row < 0 || col < 0 || row >= H || col >= L || matrix3[row][col] != 0)
            return;
        matrix[row][col] = 1;
        DFS(row + 1, col);
        DFS(row - 1, col);
        DFS(row, col + 1);
        DFS(row, col - 1);
    } // конец тела метода DFS

Помогите, пожалуйста.


Ответы (0 шт):