Java(顾客最短等待时间)

题目如下:

设有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);
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值