Как максимально эффективно разместить элементы на площади?
Задача об укладке ранца не имеет решения "math. формулой".
Ваш случай несколько проще из-за дискретности.
Нормальная тема для fl, при условии, что есть понимание, что задачи оптимизации не всегда решаются оптимальным из всех возможных способом )
я думаю это наиболее точное решение из всего что я нашел:rosettacode.org/wiki/Knapsack_problem