寒假的時候,ACBOY要去拜訪很多朋友,恰巧他所有朋友的家都處在座標平面的X軸上。ACBOY可以任意選擇一個朋友的家開始訪問,但是每次訪問後他都必須回到出發點,然後才能去訪問下一個朋友。比如有4個朋友,對應的X軸座標分別為1, 2, 3, 4。當ACBOY選擇座標為2的點做為出發點時,則他最終需要的時間為 |1-2|+|2-2|+|3-2|+|4-2| = 4。
現在給出N個朋友的座標,那麼ACBOY應該怎麼走才會花費時間最少呢?
先排序,取中位數。
import java.util.Arrays; import java.util.Scanner; public class hdu2083 { public static void main(String[] args) { // TODO 自動生成的方法存根 Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for (int i = 0; i < n; i++) { int nn = sc.nextInt(); int[] aa = new int[nn]; for (int j = 0; j < aa.length; j++) { aa[j] = sc.nextInt(); } Arrays.sort(aa); int sum = 0; for (int j = 0; j < aa.length; j++) { sum += Math.abs(aa[j]-aa[nn/2]); } System.out.println(sum); } sc.close(); } }