新學(xué)校選址

?為了解新學(xué)期學(xué)生暴漲的問(wèn)題,小樂(lè)村要建立所新學(xué)校,考慮到學(xué)生上學(xué)安全問(wèn)題,需要所有學(xué)生家到學(xué)校的距離最短。
?假設(shè)學(xué)校和所有學(xué)生家都走在一條直線(xiàn)之上,請(qǐng)問(wèn)學(xué)校建立在什么位置,能使得到學(xué)校到各個(gè)學(xué)生家的距離和最短。
?輸入描述:
??第一行: 整數(shù) n 取值范圍 [1, 1000],表示有n戶(hù)家庭。
??第二行: 一組整數(shù) m 取值范圍 [0, 10000] ,表示每戶(hù)家庭的位置,所有家庭的位置都不相同。
?輸出描述:一個(gè)整數(shù),確定的學(xué)校的位置。如果有多個(gè)位置,則輸出最小的。

暴力
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int number = sc.nextInt();
        int[] people = new int[number];
        for(int i = 0;i < number;i++){
            people[i] = sc.nextInt();
        }
        //number取多少時(shí) number坐標(biāo)的差
        int[][] dp = new int[number][number];
        //計(jì)算每個(gè)坐標(biāo)距離
        for(int i = 0;i < number;i++){
            for(int j = 0;j < number;j++){
                dp[i][j] = Math.abs(people[i] - people[j]);
            }
        }
        int min = Integer.MAX_VALUE;
        int res = 0;
        for(int i = 0;i < number;i++){
            int tempMin = 0;
            for(int j = 0;j < number;j++){
                tempMin += dp[i][j];
            }
            if(min > tempMin){
                res = people[i];
                min = tempMin;
            }else if(tempMin == min){
                res = Math.min(res,people[i]);
            }
        }
        System.out.print(res);
    }
}
選中位數(shù)
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int number = sc.nextInt();
        int[] people = new int[number];
        for(int i = 0;i < number;i++){
            people[i] = sc.nextInt();
        }

        // 對(duì)數(shù)組進(jìn)行排序
        Arrays.sort(people);

        // 對(duì)數(shù)組排好序
        // 若n為奇數(shù),則為 people[n / 2],就中位數(shù),中間一定到兩邊最小
        // 若n為偶數(shù),則為 people[n / 2 - 1],選靠左的元素,省略中間兩個(gè)點(diǎn),其它點(diǎn)的距離都是固定長(zhǎng)度,中間相向,同時(shí)又是輸出最小的
        if(number % 2 != 0){
            //5選第三個(gè)位置,索引2
            System.out.println(people[number / 2]);
        }else{
            //5選第二個(gè)位置,索引1
            System.out.println(people[number / 2 - 1]);
        }
        
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容