Russian Qt Forum
Ноябрь 23, 2024, 00:44
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
Алгоритмы
>
Упаковка прямоугольников в прямоугольник
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Упаковка прямоугольников в прямоугольник (Прочитано 6516 раз)
CuteBunny
Гость
Упаковка прямоугольников в прямоугольник
«
:
Июнь 13, 2012, 15:38 »
Задача: дан прямоугольник с w, h. Его нужно заполнить максимальным кол-вом маленьких прямоугольников из n, с wi, hi, где i >=1 && i <= n, используя все имеющееся пространство, при чем маленькие прямоугольники не должны пересекаться внутри большого.
Как это сделать без трансформаций, без оптимизаций, самым прямым и доступным алгоритмом?
Спасибо.
«
Последнее редактирование: Июнь 13, 2012, 15:41 от CuteBunny
»
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Упаковка прямоугольников в прямоугольник
«
Ответ #1 :
Июнь 13, 2012, 16:20 »
Здесь трудности с understand'ом
Может быть все таки "куб" с размерами по осям (c, w, h) если у этих размеров 3 и Вы говорите о пространстве?
Если "наибольшим количеством" значит "оптимальное заполнение" то задача выглядит слишком сложной. Наверное речь идет просто о заполнении большого куба непересекающимися кубиками из набора. А уж "наибольшим" или нет - как получится
- извлекаем наибольший куб из набора и с ставим его в угол вмещающего. Не влезает - пробуем другой. В результате получается несколько новых свободных кубов. Для них повторяем процедуру расстановки рекурсивно. Ну вот и все
Записан
CuteBunny
Гость
Re: Упаковка прямоугольников в прямоугольник
«
Ответ #2 :
Июнь 13, 2012, 16:51 »
Да мне бы с прямоугольниками разобраться для начала...
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Упаковка прямоугольников в прямоугольник
«
Ответ #3 :
Июнь 13, 2012, 17:06 »
Все то же самое, только 2 размера вместо 3
Записан
CuteBunny
Гость
Re: Упаковка прямоугольников в прямоугольник
«
Ответ #4 :
Июнь 15, 2012, 11:40 »
Вроде сделал...
Правда без рекурсий.
Пытаемся расположить прямоугольник справа рядом с любым прямоугольником на большом прямоугольнике, если он не пересекается с другими и находится в большом, то кладем его, иначе пытаемся вставить снизу от любого другого.
Не самый наверное все-таки оптимальный вариант, т.к. я два раза делаю полный перебор всех имеющихся прямоугольников, т.е. сложность алгоритма в худшем случае составит O(n^2).
В принципе можно как-то оптимизировать определения подходящего места - не делать весь перебор всех маленьких прямоугольников и проверять на пересечение с новым, но я пока не знаю, как сделать по-другому.
На моей машине прямоугольник 300x300 заполняется рэндомными прямоугольниками ~1с.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...