вход
Доска: 2D контейнер (матрица, список списков и т. Д.) Букв, таких как:
["B", "C", "C", "C", "C", "B", "B", "C", "A", "A"],
["B", "A", "C", "B", "B", "A", "B", "B", "A", "A"],
["B", "C", "B", "C", "A", "A", "A", "B", "C", "B"],
["B", "B", "B", "A", "C", "B", "A", "C", "B", "A"],
["A", "A", "A", "C", "A", "C", "C", "B", "A", "C"],
["A", "B", "B", "A", "A", "C", "B", "C", "C", "C"],
["C", "B", "A", "A", "C", "B", "B", "C", "A", "A"]
Если вы выбираете список списков, вы можете предположить, что все списки имеют одинаковую длину.
правила
- Чтобы сделать правильный прямоугольник, вам нужны все углы прямоугольника с одинаковыми буквами.
- Пример, посмотрите образец платы с X ниже. Вы можете увидеть 'X' на (1,0) также на (4,0) также на (1,3) и на (4,3), тогда у вас есть прямоугольник [1,0,4,3], что означает из (1,0) - (4,3):
Образец платы с X :
["B", "X", "C", "C", "X", "B", "B", "C", "A", "A"],
["B", "A", "C", "B", "B", "A", "B", "B", "A", "A"],
["B", "C", "B", "C", "A", "A", "A", "B", "C", "B"],
["B", "X", "B", "A", "X", "B", "A", "C", "B", "A"],
["A", "A", "A", "C", "A", "C", "C", "B", "A", "C"],
["A", "B", "B", "A", "A", "C", "B", "C", "C", "C"],
["C", "B", "A", "A", "C", "B", "B", "C", "A", "A"]
- Цель состоит в том, чтобы найти прямоугольник или один из прямоугольников с наибольшей площадью, рассчитанной по формуле (правый левый + 1) * (нижний верх + 1)
- Если имеется несколько прямоугольников с одинаковой максимальной площадью, выведите любой. Опционально тот, который (верхняя координата, левая координата, правая координата, нижняя координата) лексикографически наименьший.
- Прямоугольники должны иметь края, параллельные краю доски.
- Каждая буква представляет собой печатный символ ASCII от A до Z (оба включены).
Выход
Выходными данными должны быть положения слева и справа от углов прямоугольника наибольшей площади. Для первого примера «доски» большой квадрат - желтый:
И ответ должен быть:
[1, 1, 8, 4]
Второй пример теста
Ввод:
["C", "D", "D", "D", "A", "A"],
["B", "D", "C", "D", "A", "A"],
["B", "D", "D", "C", "A", "C"],
["B", "D", "B", "C", "A", "C"]
Должен дать один из этих трех списков координат, идентифицирующих область из шести прямоугольников:
[1, 0, 2, 2]
[1, 0, 3, 1]
[3, 2, 5, 3]
Этот вопрос размещен в переполнении стека с заголовком: Как найти самый большой прямоугольник в двумерном массиве, образованном четырьмя одинаковыми углами? и с этим грубым решением JS (я могу сказать "грубо", потому что это мой код;):
Хорошо, это мой первый пост, будь терпим со мной, пожалуйста. Я изменю все, что вы говорите, чтобы улучшить тест.
((left,top),(right,bottom))
этого тоже должно быть хорошо. Я удалил свой ответ и снова отвечу, когда вопрос будет полностью уточнен.