程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU 2083 簡易版之最短距離

HDU 2083 簡易版之最短距離

編輯:C++入門知識

Problem Description
寒假的時候,ACBOY要去拜訪很多朋友,恰巧他所有朋友的家都處在坐標平面的X軸上。ACBOY可以任意選擇一個朋友的家開始訪問,但是每次訪問後他都必須回到出發點,然後才能去訪問下一個朋友。
比如有4個朋友,對應的X軸坐標分別為1, 2, 3, 4。當ACBOY選擇坐標為2的點做為出發點時,則他最終需要的時間為 |1-2|+|2-2|+|3-2|+|4-2| = 4。
現在給出N個朋友的坐標,那麼ACBOY應該怎麼走才會花費時間最少呢?

 


Input
輸入首先是一個正整數M,表示M個測試實例。每個實例的輸入有2行,首先是一個正整數N(N <= 500),表示有N個朋友,下一行是N個正整數,表示具體的坐標(所有數據均<=10000).

 


Output
對於每一個測試實例,請輸出訪問完所有朋友所花的最少時間,每個實例的輸出占一行。

 


Sample Input
2
2
2 4
3
2 4 6


Sample Output
2
4

import java.io.BufferedInputStream;
import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc=new Scanner(new BufferedInputStream(System.in));
		int k,m,n;
		k=sc.nextInt();
		for(int i=0;i<k;i++){
			m=sc.nextInt();
			int a[]=new int[m];
			for(int j=0;j<a.length;j++){
				a[j]=sc.nextInt();
			}
			n=fun(m,a);
			System.out.println(n);
		}
	}
	public static int fun(int m,int a[]){
		int k,d=0;
		Arrays.sort(a);
		k=m/2;
		for(int i=0;i<a.length;i++){
			d+=Math.abs(a[i]-a[k]);
		}
		return d;
	}
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved