Ребята, всем привет! Я решаю в 1с задачу. Ее формулировка более сложная и приближенная к реальной жизни, но суть такая:
Есть большой прямоугольник, известны его длина и ширина. И есть список различных маленьких прямоугольников, их длина и ширина тоже известны. Нужно определить, какими из заданных прямоугольников можно полностью заполнить площадь большого. Имеется в виду, что если у нас есть большой прямоугольник 5х6, то его можно заполнить прямоугольниками 5х1 или 2х3. При этом, если мы уже взяли 5х1, то только им и заполняем. Прямоугольники можно укладывать как в длину, так и в ширину.
Я понимаю, что это вопрос чистой математики, и задачу можно решить на любом языке программирования. Вся проблема в том, что я не могу сформулировать алгоритм. Как ни странно, найти тоже не получилось. Помогите, пожалуйста)
Примерно в начале 90-х у меня приятель по теме оптимизации выкладки кроя на отрезках тканей, для швейной фабрики дипломную написал. Правда там были не прямоугольные детали кроя.
Так что уровень задачи вы можете себе представить?
(2) Автораскладка лекал - это жуть на самом деле. Был у меня опыт на трикотажной фабрике..
Кроме геометрии с минимальными отходами нужно учитывать еще кучу факторов, которые трудно формализовать.
В общем, опытный закройщик-раскладчик лучше любых алгоритмов.
Это ведь учебная задача? Очень оторванное от жизни, чтобы быть реальной.
Алгоритмы формулируются просто. Запишите условие задачи в математических формулах - и считайте, что половина задачи решена.
В данном случае. Есть большой прямоугольник размером (H x L).
И есть конечный список маленьких прямоугольников h1 x l1, h2 x l2 .... h(n) x l(n).
Просматриваем весь список в цикле от i=1 до n.
Решением задачи будут только те прямоугольники, у которых такие l(i) и h(i)... дальше подсказывать?
Спасибо всем, кто написал про двумерную упаковку и рюкзак. Я реализовала похожий алгоритм, моя задача попроще. Поэтому отмечу ответ про двумерную упаковку как решение.