题目:
同时有n个任务需要计算机后台处理,但是每次只能处理一个任务,其他任务处于等待。系统总体等待时间是每个任务的等待时间之和。如何安排任务的处理顺序使得系统总体等待时间最小。
输入格式:
第一行输入整数n,代表任务的个数,1<n<100。第二行输入n个整数,代表每个任务需要处理的时间,每个任务处理的时间都小于100。
输出格式:
输出最小的总体等待时间。
输入样例:
2
3 5
输出样例:
3
注意:
由于每一个任务执行时,剩下的任务都在等待,所以每一个任务都要加上自己所等待的时间(除了第一个任务不用加),最后才会得到正确的总体等待时间。
代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int i;
int j;
int temp = 0;
int sum = 0;
int n = in.nextInt();
int [] arr = new int [n];
for(i=0;i<arr.length;i++){
arr[i] = in.nextInt();
}
for(i=0;i<arr.length;i++){
for(j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for(i=1;i<arr.length;i++){
arr[i]+=arr[i-1];
}
for(j=0;j<arr.length-1;j++){
sum+=arr[j];
}
System.out.println(sum);
}
}