題目描述

問題來源:https://www.acwing.com/problem/content/description/106/
分析
- 這道題涉及到一個數學知識(想要演算法好,數學不能差),**在數軸上,一個點到另外兩個點的距離之和的絕對值大于等于這兩個點距離的絕對值,**文字太枯燥了,下面結合圖片來理解

- 知道這個知識之后我們便會發現,當這個點(倉庫X的位置)在兩個點中間的話(兩個商家的位置),它離兩個點距離最短,

- 之后我們根據這個推廣一下,就是這道題的解了,如果有很多點的話,我們兩兩為一組(第一個和最后一個,第二個和倒數第二個,以此類推),然后將每一組的最短距離加起來就是總體的最短距離了,

但由于商家的位置是隨機輸入的,所以需要先排個序
代碼如下
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
int[] a=new int[n];
for(int i=0;i<n;i++)
{
a[i]=scan.nextInt();
}
Arrays.sort(a);
int sum=0;
int mid=n/2;
for(int i=0;i<n;i++)
{
sum+=Math.abs((a[mid]-a[i]));
}
System.out.println(sum);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/247193.html
標籤:java
上一篇:泛型(通配符等)
