题目如下:
设有n个顾客同时等待一项服务。顾客i需要的服务时间为ti(1<i<n),共有s处可以提供此项服务。应如何安排n个顾客的服务次序才能使得平均等待时间达到最小?平均等待时间是n个顾客等待时间的总和除以n。
代码如下:
package TXSF;
import java.util.Scanner;
public class ZY {
public static void main(String args[]){
int i,j;
int n,s;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入顾客人数:");
n = scanner.nextInt();
System.out.println("请输入服务点数:");
s = scanner.nextInt();
int[] a = new int[n];//存储每个顾客的等待时间
int[] b = new int[n];//存储服务点
int[] c = new int[n];//存储服务等待时间
System.out.println("请输入每个顾客的等待时间:");
for(i = 0; i < n; i++){
a[i] = scanner.nextInt();
}
JS(a,b,c,n,s);
}
public static void JS(int a[],int b[],int c[],int n,int s){
int temp;
int time = 0;
int e = 0, f = 0;
for(int i = 0; i < a.length; i++){
for(int j = i+1; j < a.length; j++){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
while(e < n)
{
b[f] += a[e];
c[f] += b[f]; //C[i] 存储每个顾客的等待时间
e++;
f++;
if(f == s) //安排s个服务点的活动
{
f = 0;
}
}
for(int w = 0; w < s; w++){
time += c[w];
}
//time = time/2*n;
System.out.println("总等待时间为:"+time);
}
}