銀行業務佇列簡單模擬

2021-10-18 22:46:11 字數 1521 閱讀 8641

問題:

設某銀行有a、b兩個業務視窗,且處理業務的速度不一樣,其中a視窗處理速度是b視窗的2倍 —— 即當a視窗每處理完2個顧客時,b視窗處理完1個顧客。給定到達銀行的顧客序列,請按業務完成的順序輸出顧客序列。假定不考慮顧客先後到達的時間間隔,並且當不同視窗同時處理完2個顧客時,a視窗顧客優先輸出。

輸入格式:

輸入為一行正整數,其中第1個數字n(≤1000)為顧客總數,後面跟著n位顧客的編號。編號為奇數的顧客需要到a視窗辦理業務,為偶數的顧客則去b視窗。數字間以空格分隔。

輸出格式:

按業務處理完成的順序輸出顧客的編號。數字間以空格分隔,但最後乙個編號後不能有多餘的空格。

輸入樣例:

8 2 1 3 9 4 11 13 15

輸出樣例:

1 3 2 9 11 4 13 15

思路:

本題主要是佇列思路,可用多種方式實現,這裡使用c++stl裡的queue

只能訪問 queue 容器介面卡的第乙個和最後乙個元素。只能在容器的末尾新增新元素,只能從頭部移除元素。

**步驟:

第一步:建立a、b兩個queue佇列,模擬a、b視窗

第二步:輸入顧客總數

第三步:迴圈輸入每個客戶編號,對奇數編號的放入a佇列中,偶數編號放入b佇列中

第四步:輸出,輸出分三種情況,第一a,b不為空,即a佇列輸出兩個元素,b佇列輸出1個元素,第二,當a為空b不為空,接下來全部輸出b佇列,第三,當b為空a不為空,輸出a剩下元素,當a,b都為空,輸出結束,輸出過程就是不斷獲取頭部元素,刪除頭部元素過程。

ac**:

#include

#include

using

namespace std;

int n;

queue<

int>a;

queue<

int>b;

void

input()

else}}

void

printf()

else

a.pop();

//刪除佇列第乙個元素

if(a.

empty()

!=1) cout <<

" "<< b.

front()

; b.

pop();

}while

(a.empty()

==1&& b.

empty()

!=1)else

b.pop();

}while

(a.empty()

!=1&& b.

empty()

==1)else

a.pop();

}}intmain()

銀行業務佇列簡單模擬

設某銀行有a b兩個業務視窗,且處理業務的速度不一樣,其中a視窗處理速度是b視窗的2倍 即當a視窗每處理完2個顧客時,b視窗處理完1個顧客。給定到達銀行的顧客序列,請按業務完成的順序輸出顧客序列。假定不考慮顧客先後到達的時間間隔,並且當不同視窗同時處理完2個顧客時,a視窗顧客優先輸出。輸入為一行正整...

銀行業務佇列簡單模擬

設某銀行有a b兩個業務視窗,且處理業務的速度不一樣,其中a視窗處理速度是b視窗的2倍 即當a視窗每處理完2個顧客時,b視窗處理完1個顧客。給定到達銀行的顧客序列,請按業務完成的順序輸出顧客序列。假定不考慮顧客先後到達的時間間隔,並且當不同視窗同時處理完2個顧客時,a視窗顧客優先輸出。輸入格式 輸入...

銀行業務佇列簡單模擬

設某銀行有a b兩個業務視窗,且處理業務的速度不一樣,其中a視窗處理速度是b視窗的2倍 即當a視窗每處理完2個顧客時,b視窗處理完1個顧客。給定到達銀行的顧客序列,請按業務完成的順序輸出顧客序列。假定不考慮顧客先後到達的時間間隔,並且當不同視窗同時處理完2個顧客時,a視窗顧客優先輸出。輸入格式 輸入...