Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
--= Eagle =--
Зарегистрирован: 23.03.2004 Сообщения: 977 Откуда: Украина, Житомир
|
Добавлено: Вт Июн 15 2004 12:57 Заголовок сообщения: Есть геометрическая задачка. Может, кто подскажет алгоритм.. |
|
|
Дан массив прямоугольников, нужно расположить их в форме прямоугольника с наименьшими возможными сторонами. Будет реализовно на Делфе. Нужен просто алгоритм. _________________ Информация должна быть общедоступной! |
|
Вернуться к началу |
|
|
Andy_user
Зарегистрирован: 03.12.2003 Сообщения: 382 Откуда: Санкт-Петербург
|
Добавлено: Вт Июн 15 2004 14:19 Заголовок сообщения: |
|
|
Неясны условия:
1. Как задан массив прямоугольников;
2. Разрешается ли прямоугольники поворачивать на 90 градусов;
3. Уточните критерий оптимальности. Может быть наименьший периметр охватывающего примоугольника ? |
|
Вернуться к началу |
|
|
GREA
Зарегистрирован: 14.05.2003 Сообщения: 758 Откуда: Новосибирск
|
Добавлено: Вт Июн 15 2004 14:45 Заголовок сообщения: |
|
|
Очевидно, начинать нужно с квадрата.
Его сторона - корень из суммы площадей.
Сначала пытаемся сложить одну сторону, к ней добавляем другой слой. Все рекурсивно. Если построение не удачно, должны собрать прямоугольник с наименьшей стороной (которая все-таки должа быть больше, чем на предыдущем шаге).
Повторяем процесс, пока не достигнем некого прямоугольника, который и будет минимальным.
Это самый базовый алгоритм.
Задача упрощается, если это похоже на пентамино (то есть, у всех длин сторон всех прямоугольников есть общий НОД)
Действительно, уточни условия и ограничения. Тогда можно будет обьяснить более понятно. |
|
Вернуться к началу |
|
|
--= Eagle =--
Зарегистрирован: 23.03.2004 Сообщения: 977 Откуда: Украина, Житомир
|
Добавлено: Вт Июн 15 2004 14:46 Заголовок сообщения: Ща, в аську автору вопроса постучусь ;) |
|
|
Уже уточнил...
1. Масив ректанглов, кол-во и размер задаёт пользователь
2. Конечно, поворачивать можно
3. Да, наименьший периметр охватывающего прямоугольника
2 GREA
А кто сказал, что там будет хоть 1 квадрат? _________________ Информация должна быть общедоступной! |
|
Вернуться к началу |
|
|
GREA
Зарегистрирован: 14.05.2003 Сообщения: 758 Откуда: Новосибирск
|
Добавлено: Вт Июн 15 2004 19:40 Заголовок сообщения: |
|
|
Я имел в виду то, что сначала, мы должны собирать прямоугольники в один большой КВАДРАТ (пытаемся минимизировать периметр). Если попытка не прошла, ищем суммарный прямоугольник максимально близкий к квадрату (минимальное увеличение одной из сторон). Решаем аналогичную задачу. В случае неудачи, опять увеличиваем сторону и повторяем процесс. Как только смогли собрать прямоугольник, он и будет минимальным (по периметру) |
|
Вернуться к началу |
|
|
|