алгоритмическая задачка
Apr. 23rd, 2008 12:17 am(будет интересно только программистам)
На работе рассказали интересную задачу. Пусть дан прямоугольный лист металла известных размеров. Из-за дефектов производства на листе есть точки, в которых металл слишком слаб - дан список таких точек, с координатами каждой. Задача: найти наибольший по площади прямоугольник внутри листа, не содержащий ни одной дефективной точки внутри себя (на границе - можно).
Искать следует только среди прямоугольников со сторонами, параллельными исходному (более общий вопрос, в котором искомый прямоугольник может быть повернут относительно всего листа, можно считать отдельной задачей - ее я вообще не знаю, как решать).
На работе рассказали интересную задачу. Пусть дан прямоугольный лист металла известных размеров. Из-за дефектов производства на листе есть точки, в которых металл слишком слаб - дан список таких точек, с координатами каждой. Задача: найти наибольший по площади прямоугольник внутри листа, не содержащий ни одной дефективной точки внутри себя (на границе - можно).
Искать следует только среди прямоугольников со сторонами, параллельными исходному (более общий вопрос, в котором искомый прямоугольник может быть повернут относительно всего листа, можно считать отдельной задачей - ее я вообще не знаю, как решать).
no subject
Date: 2008-04-24 07:49 am (UTC)Берём точку и перебираем листья дерева прямоугольников, проверяя принадлежность точки. Если точка лежит в пределах очередного листа, пристраиваем к нему 4 новых листа (деление этого прямоугольника вертикалью и горизонталью, проходящей через точку). Если точка лежит на границе, будет только 2 листа. Если на углу -- точка повторяется, делить нечего. Переходим к следующей точке и повторяем, пока они не кончатся.
По окончании ещё раз перебираем листья и находим самый большой.
no subject
Date: 2008-04-24 08:44 am (UTC)no subject
Date: 2008-04-24 09:14 am (UTC)no subject
Date: 2008-04-24 10:31 am (UTC)Если в указанном примере была бы четвёртая точка вблизи левого верхнего угла, перебор множества листьев второй и четвёртой ветви заведомо не даст результата.
no subject
Date: 2008-04-25 10:38 am (UTC)