最优服务次序问题
问题描述:
设有 n个顾客同时等待一项服务,顾客i需要的服务时间为ti,(1<=i<=n)。应如何安排n个顾客的服务次序才能使平均等待时间达到最小?(平均等待时间是n个顾客等待服务时间总和除以n)
输入:
第一行为一个正整数n,表示有n个顾客
第二行为n个正整数,表示n个顾客需要的服务时间
输出:
最小平均等待时间。
import java.util.Arrays;
import java.util.Scanner;
public class Optimal_service_order_problem {//贪心算法--最优服务次序问题
public static void main(String args[]){
Scanner scanner = new Scanner(System.in);
int n =scanner.nextInt();
int []wait = new int[n];
for(int i = 0;i < n;i++){
wait[i] = scanner.nextInt();
}
Arrays.sort(wait);//升序排序
for(int i = 1;i < n;i++){
wait[i] += wait[i - 1];
}
double total = 0;
for (int i = 0;i < n;i++){
total += wait[i];
}
System.out.printf("%.2f\n",total / n);
}
}