@Pavel13131313013

Как правильно найти подматрицу?

У меня есть матрица элементами которой могут быть только 0 и 1. Нужно найти самую большую квадратную подматрицу которая состоит только из 1 и вернуть ее длину.

function findLargestSquare(mat) {

    let max = 0;

    let lookup = [];

    for (var i = 0; i < mat.length; i++) {

        lookup[i] = new Array(mat.length);

    }

    for (let i = 0; i < mat.length; i++) {

        for (let j = 0; j < mat.length; j++) {

            lookup[i][j] = mat[i][j];



            if (i && j && mat[i][j])

                lookup[i][j] = Math.min(Math.min(lookup[i][j - 1], lookup[i - 1][j]), lookup[i - 1][j - 1]) + 1;

            if (max < lookup[i][j])

                max = lookup[i][j];

        }

    }

    return max;

}

console.log(findLargestSquare([
    [0, 0, 1, 1, 0],
    [1, 1, 1, 1, 0],
    [1, 1, 1, 0, 0],
    [1, 1, 1, 0, 0],
    [1, 1, 1, 0, 0]
])); // 3

console.log(findLargestSquare([
    [1, 0, 0],
    [0, 1, 0],
    [0, 0, 1]
])); // 1 но дoлжен возврощать 0

console.log(findLargestSquare([
    [0, 0, 0, 0],
    [0, 0, 0, 0],
    [0, 0, 0, 0],
    [0, 0, 0, 0]
])); // 0

console.log(findLargestSquare([
    [0, 0, 0, 0],
    [0, 0, 0, 0],
    [1, 1, 0, 0],
    [1, 1, 0, 0]
])); // 2


Поможете найти ошибку?
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
@Karpion
А где ошибка-то? Во втором случае - надо 1.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы