W
我有一个数组0..N-1
我需要将它们分成两组:说K
和N-K
元素。
但条件是:sum(N-K)
-sum(K)
应该是最大值。
我该如何处理?
我试过这样做:对数组进行排序 - std::sort(W,W+N)
,然后:
for(int i=0; i<K; ++i) less+=W[i];
for(int i=K; i<N; ++i) more+=W[i];
进而more-less
但我认为这不是最佳方式,或者在某些情况下甚至可能是错误的。
谢谢。
更新:
我们必须从中选择K
元素,W
使得sum(k elements)
和之间的差异sum(remaining elements)
最大。