私はの配列を持っていWます0..N-1
それらを 2 つのセットに分割する必要があります: SayKとN-KElements です。
ただし、条件は次のとおりです。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要素を選択する必要があります。Wsum(k elements)sum(remaining elements)