0

例如,我说过x1,x2..,xn.我必须'k'从这 n 个元素中选择元素,这样——让选定的元素成为y1,y2,y3,..yk——总和|y1-y2| + |y2-y3| + |y3-y1| + ...将是最小值。

换句话说,这些K元素之间的相互差异的总和应该小于或等于任何其他K元素的选择。

元素x1,x2..xn未排序,可能包含重复项。

我对此有最基本的解决方案,即对数组进行排序——让排序后的数组为 z——并从 k 个元素的窗口中滑动i = 0 to i = n-k-1,当它们被排序时,互差值的总和采用以下常见形式:

(k-1)*z[0] + (k-3)*z[1] + (k-5)*z[2] + ........  -(k-1)*z[k-1].

找到最小的相互差异给了我答案。

获得互差的最小总和就足够了,因为其余代码仅将其作为输入。

我需要优化或找到更好的算法来做到这一点。谢谢。

4

0 回答 0