Java(顧客最短等待時間)
阿新 • • 發佈:2018-12-19
題目如下:
設有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); } }