DS佇列 銀行單佇列多視窗模擬

2022-06-24 01:21:11 字數 1339 閱讀 7062

假設銀行有k個視窗提供服務,視窗前設一條黃線,所有顧客按到達時間在黃線後排成一條長龍。當有視窗空閒時,下一位顧客即去該視窗處理事務。當有多個視窗可選擇時,假設顧客總是選擇編號最小的視窗。

本題要求輸出前來等待服務的n位顧客的平均等待時間、最長等待時間、最後完成時間。

輸入第1行給出正整數n(≤1000),為顧客總人數;隨後n行,每行給出一位顧客的到達時間t和事務處理時間p,並且假設輸入資料已經按到達時間先後排好了順序;最後一行給出正整數k(≤10),為開設的營業視窗數。

在一行中輸出平均等待時間(輸出到小數點後1位)、最長等待時間、最後完成時間,之間用1個空格分隔,行末不能有多餘空格。

90 20

1 15

1 61

2 10

10 5

10 3

30 18

31 25

31 2

36.2 17 62

將顧客定義為乙個佇列,同時將每個視窗也都定義為佇列。設定迴圈判斷顧客佇列是否為空,如果不為空就執行視窗佇列的push操作,更新視窗佇列的front為該視窗顧客任務的完成時間。每次選擇視窗的時候都比較哪個視窗的完成時間最小,然後選擇該視窗進行push。

#include#include#include using namespace std;

int main()

int k;

cin >> k;

queue* win = new queue[k];

int waittime = 0;

int maxwait = 0;

int endtime = 0;

double wait = 0;

int waitpeo = 0;

for (int i = 0; i < n; i++)

peo[i]->pop();

break;

}else

}if (flag == 0)

}if (win[minwin].front() - peo[i][0].front() > maxwait)

if (win[minwin].front() - peo[i][0].front() > 0)

else

peo[i]->pop();

}} }

for (int i = 0; i < k; i++)

} wait = (double)waittime / n;

cout << fixed << setprecision(1) << wait << ' ' << maxwait << ' ' << endtime << endl;

return 0;

}

ds佇列 銀行單佇列多視窗模擬

題目 假設銀行有k個視窗提供服務,視窗前設一條黃線,所有顧客按到達時間在黃線後排成一條長龍。當有視窗空閒時,下一位顧客即去該視窗處理事務。當有多個視窗可選擇時,假設顧客總是選擇編號最小的視窗。本題要求輸出前來等待服務的n位顧客的平均等待時間 最長等待時間 最後完成時間。輸入 輸入第1行給出正整數n ...

銀行排隊問題之單佇列多視窗服務 (25 分)

假設銀行有k個視窗提供服務,視窗前設一條黃線,所有顧客按到達時間在黃線後排成一條長龍。當有視窗空閒時,下一位顧客即去該視窗處理事務。當有多個視窗可選擇時,假設顧客總是選擇編號最小的視窗。本題要求輸出前來等待服務的n位顧客的平均等待時間 最長等待時間 最後完成時間,並且統計每個視窗服務了多少名顧客。輸...

PTA 銀行排隊問題之單佇列多視窗服務 25分

假設銀行有k個視窗提供服務,視窗前設一條黃線,所有顧客按到達時間在黃線後排成一條長龍。當有視窗空閒時,下一位顧客即去該視窗處理事務。當有多個視窗可選擇時,假設顧客總是選擇編號最小的視窗。本題要求輸出前來等待服務的n位顧客的平均等待時間 最長等待時間 最後完成時間,並且統計每個視窗服務了多少名顧客。輸...