Задать вопрос

Задачка с расстановкой прямоугольников?

Друзья я не математик, но у меня возникла такая вот нехитрая задачка. Посоветуйте, в каком направлении «копать».


Дан прямоугольник-контейнер с изменяющимися шириной и высотой. Еще есть n-прямоугольников-детей. Задача заключается в том, чтобы заполнить контейнер прямоугольниками-детьми, таким образом, чтоб они занимали как можно большую площадь прямоугольника-контейнера (они могут располагаться как по горизонтали так и по вертикали и даже в несколько строк и столбцов если контейнер большой, а «детей» много). Ситуация омрачается еще тем, что прямоугольники-дети должны быть с одинаковыми размерами (но возможно мне это только кажется).


Подскажите, какие алгоритмы может посмотреть или уже есть реализации нечто подобного? Всю голову себе уже «сломал».


За любую помощь буду благодарен! Спасибо.
  • Вопрос задан
  • 9779 просмотров
Подписаться 4 Оценить 5 комментариев
Пригласить эксперта
Ответы на вопрос 4
@pswd
На сколько в итоге я понял у вас есть размер окна и размер n одинакового размера картинок.
Требует разместить их в окне, таким способом, чтобы картинки покрыли максимальную площадь окна.

Если я все правильно понял, то это и действительно является двумерной задачей об упаковке.
Рекомендую почитать:
раз
два
три
книжка

Желаю успехов :)
Ответ написан
Комментировать
ramilexe
@ramilexe
Вообще то это задача об упаковки. В данном случае двухмерная. Существует масса алгоритмов, в том числе и генетических.
Посмотрите для начала тут
Ответ написан
@flashguy Автор вопроса
Спасибо всем кто откликнулся!

Я знаю чего я хочу :) может просто объясняю как-то не правильно :)

Уточняю. Есть прямоугольник (окно программы) у него будет меняться ширина и высота динамически (все зависит от пользователя), его нужно заполнить равными прямоугольниками (картинками), которых может быть разное кол-во, задаваемое также динамически. Так вот нужно определить в зависимости от размеров исходного окна (600х150 px к примеру) размер картинки (200х150 px к примеру) если картинок было 3-и и расположить картинки горизонтально. Другое условие: окно размером 150х600 px, размер картинок определить как 150х200 px и расположить картинки вертикально. И третье возможное условие все для тех же 3-х картинок, когда окно размером 600х600 px? то размер картинок должен быть определен как 300х300 px и они будут расположены в два столбца и в две строки. Вот примерно так :)
Ответ написан
@flashguy Автор вопроса
Спасибо всем откликнувшимся за помощь. Буду читать и решать!
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы