Лучший ответ

    1.  1 0

    blblblbl 8 (115613)815115 16 лет  

    Это по теории графов надо оптимизировать, я не логистик, они хорошо её знают.

    Могу предложить только перебор всех возможных вариантов :) Я б так делал, медленно зато надёжно. Ни один из алгоритмов сортировки которые я могу придумать, не может до такой эффективности дойти.

    нумеруем листы по двумерному массиву 1(длина, ширина), 2(длина, ширина), 3(длина, ширина)...

    (по логике тетриса :) )
    начинаем их просто распологать по порядку, не вращая:
    Строим первый ряд снизу,по порядку:
    1, 2, 3...
    пока не достигнута правая граница или пока не кончатся листы
    строим ломанную кривую по нижнему контуру полчившейся "расчёски"
    на самой глубокой впадине (по вертикали) проверяем не влезет ли по горизонтали  №4, если нет №5, №6 и т.д... впадину можно рассматривать как прямоугольник ограниченный боковинами впадины и верхним краем исходного листа. Проверка, поместиться ли в нём по ширине и длинне очередной лист очень простая.
    Если кто-то влез, строим новую ломанную линию. Проверяем опять наиглубочайшую впадину..
    Если никто не влез, вставляем фальшивый лист, высотой до наименьшей вершины границ впадины. Ну типа как уравниваем впадину до соседней по высоте. Строим новую ломанную линию. И так пока не кончатся фигуры или лист.
    Если кончился лист, а фигуры остались - коэффициент кпд берём 0
    Если кончились фигуры, кпд делаем по площади оставшейся фигуры окаймлённой нашей ломанной линией с одной стороны и границами основного листа с других сторон.

    Запоминаем расположение фигур и кпд.
    Меняем в исходном массиве фигур местами два элемента, прогоняем цикл построения по методу тетриса. (я его так назвал, хотя только придумал :) ) сравниваем кпд двух построений. Если кпд второго больше, (т.е. более выгодно расположены) результаты первого прогона стираем, второго запоминаем.
    Так прогоняем все варианты расположения по порядку листов, когда кончатся варианты переворачиваем один лист на 90 и прогоняем ещё все разы. Потом возвращаем первый в исходное, попорачиваем следующий. и т.д. Когда со всеми прогонит, переворачиваем сразу два листа, потом другие два и до конца..

    А и перед всеми извращениями не плохо было бы суммировать площади всех листов и суммарную площадь сравнить с площадью листа. А то может их в принципе не возможно расположить :)

Ответы

    1.  2 1

    Spectrum (34) 7 (38495)31034 16 лет  

    O_O мозг завис...

    1.  2 1

    BeLaRuSKa 5 (3173)1120 16 лет  

    pipec... i takie voprosi v dva 4asa no4i... ne ponjaaatno...

    1.  1 0

    Syslik (32) 6 (12094)31739 16 лет  

    по поводу программы есть идея с самым точным, но самым тупым решением.
    это взять координаты большого прямоугольника, по диоланали. типо А это левый нижний, а Б это правый верхниу угол, потом устроить кучу проверок (что которые конечно очень сократит исполнительность программы.) так же взять ккординаты маленького прямоугольника и начать его пихать сначало вертикально проверяя не будет ли он вылезать снизу и справа, потом так же горизонтально проверить, и отнимать остаток, и где остаток будет больше тот спобоб и юзать.
    или лучше пытаться сделать из как можно больше маленьких один большой, который бы влезал в этот, вырезать его, а потом уже из него вырезать ещё меньше и так пока не сократиться. до конца самого!

    1.  0 0

    BlackChocolate 6 (19520)32354 16 лет  

    Да.

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

Рейтинг@Mail.ru Top.LV PULS.LV Professional rating system