Алгоритм упаковки прямоугольников

Мне нужно решить следующую задачу: У меня есть несколько прямоугольников размером: ширина-высота, ширина/2 высота/2, ширина/4 высота/4 , ширина/8 высота/8 ... и т.д.

Мне нужно упаковать эти прямоугольники в большой прямоугольник размером x*ширина y*высота так, чтобы ни один прямоугольник не перекрывался, прямоугольники были распределены в упаковке случайным образом и любой прямоугольник должен хотя бы касаться другого прямоугольника. Я попробовал довольно простой жадный алгоритм, но он не работает.

Не могли бы вы подсказать мне, как решить эту проблему?

Спасибо!

EDIT: Вы можете иметь более одного прямоугольника каждого размера

Это не домашнее задание. Я пытаюсь создать эффект, подобный эффекту на ted.com

Под случайностью я подразумеваю, что может существовать более одной упаковки прямоугольников, удовлетворяющей ограничениям. Алгоритм не должен создавать одну и ту же упаковку при каждом запуске.

5
задан JJ for Transparency and Monica 22 May 2018 в 10:39
поделиться