一、题目描述
在银行营业大厅共服务3种客户,类型为A\B\C,大厅分别设置了3个窗口分别服务三种客户,即每个窗口只服务一种客户。现有一批客户来银行办理业务,每个客户都有类型和办理业务时间。每个窗口按照客户到来的顺序进行服务。
编程实现它们的办理流程,请使用C++自带的queue,必须使用队列实现,其他方法0分!
队列queue的用法如下:
包含头文件:#include
定义一个整数队列对象:queue myQe;
定义一个整数队列对象数组:queue myQA[10];
入队操作:myQe.push(itemp); //把整数itemp进入队列
出队操作:myQe.pop(); //把队头元素弹出队列,注意本操作不获取队头元素
获取队头元素: itemp = myQe.front(); // 把队头元素放入itemp中,注意本操作不弹出元素
判断队列是否为空:myQe.empty();//队列空则返回true,不空则返回false
二、输入与输出
1.输入
第一行输入先输入n表示客户数量
第二行输入每个客户的类型,数据之间用用空格隔开
第三行输入每个客户的办理时间,数据之间用用空格隔开
8
A B C B C A A A
10 20 30 40 50 60 70 80
2.输出
第一行输出A类客户的平均办理时间
第二行输出B类客户的平均办理时间
第三行输出C类客户的平均办理时间
结果输出向下取整的整数。
55
30
40
三、参考代码
#include <iostream>
#include <stack>
#include <string>
#include<queue>
#include<math.h>
using namespace std;
int main() {
int sum;
cin >> sum;
queue<char> q;
char ch;
double atime = 0, btime = 0, ctime = 0;
int anum = 0, bnum = 0, cnum = 0;
int time = 0;
for (int i = 0; i < sum; i++)
{
cin >> ch;
q.push(ch);
}
for (int i = 0; i < sum; i++) {
cin >> time;
if (!q.empty()) {
if (q.front() == 'A') {
atime += time;
anum++;
q.pop();
}
else if(q.front() == 'B'){
btime += time;
bnum++;
q.pop();
}
else if (q.front() == 'C') {
ctime += time;
cnum++;
q.pop();
}
}
}
cout << floor(atime / anum) << endl;
cout << floor(btime / bnum) << endl;
cout << floor(ctime / cnum) << endl;
return 0;
}
/**********************************************************************
Problem: 1076
Language: C++
Result: AC
Time:7 ms
Memory:2224 kb
**********************************************************************/