Пусть S обозначает сумму всех предметов, а n - количество предметов.Если вы поместите элементы в m строк, вы будете иметь вес не менее S / m для каждой строки.Поскольку S / m ≤ B, вы получаете m ≥ S / B.Я начинаю с потолка (S / B) как значения m, а затем увеличиваю m на единицу, пока не будет найдено решение.
Когда установлено m и задано n, это просто вопрос рекурсивного поискаправильные границы.Вы угадываете границы между строками одна за другой (рекурсивно) и возвращаетесь, когда решение становится невозможным.Если вы найдете решение, вы сохраните его для справки, потому что оно может быть наилучшим с точки зрения дисперсии.В конце концов вы выбираете лучшее решение.Если решений нет, то вы увеличиваете m на единицу и повторяете.