Как наездник группы, вы должны упаковать грузовик. Ваша программа разместит пакеты так, чтобы они помещались на минимальной высоте.
Плохо упакованный грузовик
правила
Пакеты могут поворачиваться на кратные 90 градусов. Пакеты могут касаться, но не должны пересекаться.
Результатом является перепакованное изображение (в файл или стандартный вывод). Ваша программа может использовать любой формат входного или выходного растрового изображения.
Ваша программа должна принимать любое количество пакетов различной формы на изображениях размером до 4000x4000 пикселей. Он не должен быть жестко закодирован для этого тестового изображения. Если я подозреваю, что какая-либо заявка была адаптирована к этому конкретному изображению, я оставляю за собой право заменить его новым тестовым изображением.
Гол
Ваша оценка - это наименьшая высота прямоугольника, который будет содержать ваше расположение (ширина - это ширина входного прямоугольника). В случае ничьей побеждает самый ранний вход.
Стандартные лазейки, как обычно, запрещены.
источник
Ответы:
Язык: Java
Оценка:
555533Я просто пытался перебрать решение путем грубой силы, перебирая фигуры в порядке уменьшения площади (периметр в случае привязки) и пробуя все возможности упаковки, пока не будет найдена действительная упаковка для той фигуры, в которой положение фигуры является фиксированным. и алгоритм переходит к следующей форме. Надеемся, что для улучшения качества результата при поиске действительной упаковки сначала пробуются все возможные позиции с повернутой формой, так что она выше, чем шире.
Примечание: это предполагает, что входные изображения имеют все формы, разделенные пробелом. Он принимает максимальную ширину вывода в качестве первого аргумента и список изображений формы в качестве других аргументов (каждое изображение формы может иметь одну или несколько фигур, разделенных хотя бы одной строкой белых пикселей)
Это решение ( на моей машине это занимает около
4 минут30 секунд):Глядя на эту картинку, кажется, что результат можно улучшить, выполнив итерацию по всем фигурам после упаковки и попытавшись немного их переместить. Я мог бы попытаться сделать это позже.источник