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
Помогите, пожалуйста.
