問題:
設某銀行有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視窗顧客優先輸出。輸入格式 輸入...