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