Heim > Backend-Entwicklung > C++ > Hauptteil

Welches Array-Element hat die kleinste Summe absoluter Differenzen?

PHPz
Freigeben: 2023-08-29 10:09:06
nach vorne
702 Leute haben es durchsucht

Welches Array-Element hat die kleinste Summe absoluter Differenzen?

Hier sehen wir eine interessante Frage. Wir haben ein Array „a“, das N Elemente enthält. Wir müssen ein Element x finden, das den Wert von |a[0] - x| + |a[1] - x| + ... + |a[n-1] - x| minimiert. Dann müssen wir die minimierte Summe finden.

Angenommen, das Array ist: {1, 3, 9, 6, 3} und jetzt ist x 3. Die Summe beträgt also |1 - 3| + |9 - 3|.

Um dieses Problem zu lösen, müssen wir den Median des Arrays als x wählen. Wenn die Größe des Arrays gerade ist, gibt es zwei Medianwerte. Sie sind beide die beste Wahl für x.

Algorithmus

minSum(arr, n)

begin
   sort array arr
   sum := 0
   med := median of arr
   for each element e in arr, do
      sum := sum + |e - med|
   done
   return sum
end
Nach dem Login kopieren

Beispiel

#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int minSum(int arr[], int n){
   sort(arr, arr + n);
   int sum = 0;
   int med = arr[n/2];
   for(int i = 0; i<n; i++){
      sum += abs(arr[i] - med);
   }
   return sum;
}
int main() {
   int arr[5] = {1, 3, 9, 6, 3};
   int n = 5;
   cout << "Sum : " << minSum(arr, n);
}
Nach dem Login kopieren

Ausgabe

Sum : 11
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWelches Array-Element hat die kleinste Summe absoluter Differenzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage