【发布时间】:2017-03-04 12:38:38
【问题描述】:
给定 N 个值为 x[1], ..., x[n] 和整数 K 的项目,找到一个线性时间算法来将这些 N 个项目排列在 K 个非空组,使得每个组中的范围(每个组中的最小和最大元素值/键之间的差异)最小化,因此范围的总和最小。
例如给定N=4、K=2 和元素1 1 4 3,对于组(1,1) 和(4,3),最小范围是1。
【问题讨论】:
-
参数范围。
-
如果对它们进行排序会发生什么?如果 n%k 不为 0 会怎样?一个组可以小于 k 吗?
-
组不能为空。这意味着它将有 >=1 个元素
-
n的最大范围是多少? -
你可以最小化一件事。 “最小化每个组的差异”是没有意义的。差异 3 和 4 的两组或差异 2 和 5 的两组哪个更好?
标签: algorithm dynamic-programming greedy