題目連結: https://zerojudge.tw/ShowProblem?problemid=d452

# 內容

老王在呈數線的星際大道中,已知,有 m 個物品在此星際大道,座標分別為 a1, a2, ..., am,請幫忙找出:老王在數線的那個位置 (老王在數線上,可以任意去),當在此位置時,到每一個物品的距離的此 m 個距離和最小為多少?

# 輸入

輸入檔中有多筆測試資料。每筆測試資料第一行有一個正整數 N, (1 ≦ N ≦ 100),代表有 N 筆測試資料。

接下來,有 N 行,每行有 m+1 個數字(1 ≦ m≦ 1000),如 m, a1, a2, ..., am ,每行的第一個字 m 表示有 m 個物品,a1, a2, ..., am為其座標。

# 輸出

對於每筆測資,輸出一行此筆資料的最小距離。

# 解題思路

用泡沫排序的方式排序找出中位數,再計算每個數與中位數的距離,輸出其總和

https://pjchender.blogspot.com/2017/09/bubble-sort.html

# 程式碼

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int T,n;
    while(cin>>T)
    {
        for(int i=0;i<T;i++)
        {
            cin>>n;
            int arr[n],sum=0;
            for(int j=0;j<n; j++)
                cin>>arr[j];
            for(int j=0;j<n;j++)
            {
                for(int k=0;k<n-j;k++)
                {
                    if(arr[k]>arr[k+1])
                        swap(arr[k],arr[k+1]);
                }
            }
            for(int j=0;j<n;j++)
                sum+=abs(arr[n/2]-arr[j]);
            cout << sum << endl;
        }
    }
    return 0;
}
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay