У меня есть массив с 2 <= n <= 100
удвоениями:
A = [a1, a2, ... , an], ai > 0
и целое число 2 <= k <= min(n, 20)
. Мне нужно разбить A
на k
подмассивов:
B1 = [a1, a2, ... , ap]
B2 = [ap+1, ap+2, ... , aq]
...
Bk = [aw+1, aw+2, ... , an]
так что сумма в каждом B
почти равна (трудно дать строгое определение, что это значит - меня интересует приблизительное решение).
Пример:
Input: A = [1, 2, 1, 2, 1], k=2
Output: [[1, 2, 1], [2, 1]] or [[1, 2], [1, 2, 1]]
Я попробовал вероятностный подход:
выборка из
[1, 2, .., n]
с использованиемA
в качестве веса вероятностиразрезать выборку на квантили, чтобы найти хороший раздел,
но это было недостаточно стабильно для производства.
tl;dr Этот вопрос спрашивает о 2- кусковые деления. Мне нужно k
-чанковое деление.