我有一组非唯一的数字,想将这些数字划分成 K
个分区,以便每个分区中的数字总和几乎相等。
假设我有以下集合。
{1, 2, 3, 4, 5, 6, 7, 8, 9}
使用线性分区算法,当K = 3
时,我得到以下分区:
{ 1 2 3 4 5 }
{ 6 7 }
{ 8 9 }
这是符合预期的,但由于这是线性分区算法,输入集合顺序的任何更改都将改变分区,这是我想要避免的。
每个分区元素和的差应该最小化。在上面的例子中,每个分区的总和为15
、13
、17
。
对于以下输入,它不起作用。
{10, 20, 90, 100, 200}
线性划分算法给我以下结果
{ 10 20 90 100 }
{ 200 }
但是正确答案应该是
{ 10, 200 }
{ 20, 90, 100 }