たとえば、n 個の要素の中から要素x1,x2..,xn.
を選択しなければならないと言いました。つまり、選択した要素を、合計が最小になるようにします。'k'
y1,y2,y3,..yk
|y1-y2| + |y2-y3| + |y3-y1| + ...
言い換えれば、これらのK
要素間の相互差の合計は、他の要素の選択よりも小さいか等しくなければなりませんK
。
要素x1,x2..xn
はソートされておらず、重複が含まれている可能性があります。
これに対する最も基本的な解決策があります。つまり、配列をソートし、ソートされた配列を zi = 0 to i = n-k-1
とし、そこから k 個の要素のウィンドウをスライドさせ、それらがソートされると、相互差値の合計は次の一般的な形式になります。
(k-1)*z[0] + (k-3)*z[1] + (k-5)*z[2] + ........ -(k-1)*z[k-1].
最小の相互差を見つけると、答えが得られます。
コードの残りの部分はそれのみを入力として受け取るため、相互差の最小合計を取得するだけで十分です。
これを行うには、最適化するか、より良いアルゴリズムを見つける必要があります。ありがとう。