例如,我说x1,x2..,xn.
我必须从这n个元素中选择'k'
个元素,以便 - 让所选元素为y1,y2,y3,..yk
- |y1-y2| + |y2-y3| + |y3-y1| + ...
的总和1}}将是最小的。
换句话说,K
元素之间的相互差异之和应小于或等于K
元素的任何其他选择。
元素x1,x2..xn
未排序,可能包含重复项。
我有最基本的解决方案,即对数组进行排序 - 让排序后的数组为z - 并从i = 0 to i = n-k-1
中滑动k个元素的窗口,并将它们排序为相互之和差异值采用以下常见形式:
(k-1)*z[0] + (k-3)*z[1] + (k-5)*z[2] + ........ -(k-1)*z[k-1].
找到最小的相互差异给了我答案。
获取相互差异的最小总和就足够了,因为其余代码只将其作为输入。
我需要优化或找到更好的算法来执行此操作。感谢。