演算法分析與設計之多處最優服務次序問題
阿新 • • 發佈:2018-11-05
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> using namespace std; int main() { int i,n,j,k,minx; int s; double t; int a[10005],b[1005]; while(cin>>n>>s) // 輸入顧客數量和可供等待的工位 { for(i=0; i<n; i++) cin>>a[i]; //輸入顧客使用時間陣列 sort(a,a+n); //將陣列從小到大排序 memset(b,0,sizeof(b)); // 將b中的陣列初始化為0 for(i=0; i<n; i++) //遍歷顧客的等待時間 { minx=0x7fffffff; //定義一個非常大的數 k=0; // for(j=0; j<s; j++) //有幾個工位 進行幾次迴圈 { if(minx>b[j]) //這個和上個小的進行對比 { minx=b[j]; //記錄小的 k=j; //記錄小的對應的工位 } } b[k]+=a[i]; // b[k] = b[k] + a[i] 記錄每個工位的總時間 a[i]=b[k]; // 把每個工位的時間賦給對應顧客 形成 顧客總時間陣列 } t=0; for(i=0; i<n; i++) // 計算顧客平均等待時間t+=a[i]; t/=n; printf("%d\n",(int)(t)); } return 0; }