![]() |
|
Программирование и разработка Обсуждение вопросов программирования |
![]() |
|
Опции темы | Опции просмотра |
![]() |
#1 |
Гость
|
задачка на сообразительность
нужно придумать алгоритм (не обязательно оптимальный) для следующей задачи:
Задача о максимальном объёме Имеются m кубов с длинами рёбер a1, a2, . . . , am и параллелепипед размера h × w × d. Найти некоторое подмножество кубов, которые нужно разместить внутри параллелепипеда таким образом, чтобы они не пересекались и заполняли максимальную часть объёма параллелепипеда. |
![]() |
![]() |
#2 |
online();
|
ну если особо не думать, то можно сделать так: выбрать минимум из h, d, w, найти 4 набора кубов, сумма ребер которых(из каждого) максимально приближенa к min(h,d,w), затем выбрать второе по величине значение из h,d,w, проделать то же самое с оставшимися кубами, ну и то же самое сделать для последнего оставшегося значения из hdw. Не забывать учитывать, что когда для высоты, например, выбраны 4 набора кубов, то для ширины и глубины в наборе кубов будет уже два крайних. Вот, потом таким же образом заполнить стенки параллепипеда, затем "тело". Вряд ли ты что-то понял из моих слов, т к объяснить это без картинки и сидящего рядом человека очень трудно
![]() Последний раз редактировалось Insya. 09.03.2007 в 16:16. |
![]() |
![]() |
![]() |
#4 |
lsd made me a prostitute
|
Не надо ничего выдумывать и придумывать, учите линейное программирование.
|
![]() |
![]() |