Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

หาโหนดที่ให้ผลรวมความต่างสัมบูรณ์น้อยที่สุด ในภาษา C

หาค่า x ที่ทำให้ Σ|arr[i] - x| น้อยที่สุด คำตอบคือ median ของอาร์เรย์

ตัวอย่าง

arr = {1, 3, 9, 6, 3} → เรียง: {1, 3, 3, 6, 9} → median = 3

Sum = |1-3|+|3-3|+|9-3|+|6-3|+|3-3| = 2+0+6+3+0 = 11

โค้ดตัวอย่าง

#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;

int minAbsSum(int arr[], int n) {
    sort(arr, arr+n);
    int med = arr[n/2];
    int sum = 0;
    for (int i=0;i

ผลลัพธ์

Min sum: 11