Ici, nous verrons une question intéressante. Nous avons un tableau 'a' contenant N éléments. Nous devons trouver un élément x qui minimise la valeur de |a[0] - x| + |a[1] - x| + ... + |a[n-1] - x|. Ensuite, nous devons trouver la somme minimisée.
Supposons que le tableau soit : {1, 3, 9, 6, 3}, et maintenant x vaut 3. La somme est donc |1 - 3| + |3 - 3| + |9 - 3| + |6 - 3| + |3 - 3|
Pour résoudre ce problème, nous devons choisir la médiane du tableau comme x. Si la taille du tableau est paire, il y aura deux valeurs médianes. Ce sont tous les meilleurs choix pour x.
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
#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); }
Sum : 11
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!