问题 A: DS队列之银行排队
时间限制: 1 Sec 内存限制: 128 MB
提交: 104 解决: 85
[提交][状态][讨论版]
题目描述
在银行营业大厅共服务3种客户,类型为A\B\C,大厅分别设置了3个窗口分别服务三种客户,即每个窗口只服务一种客户。现有一批客户来银行办理业务,每个客户都有类型和办理业务时间。每个窗口按照客户到来的顺序进行服务。
编程实现它们的办理流程,请使用C++自带的queue必须使用队列实现,其他方法0分!
队列queue的用法如下:
1.包含头文件:#include <queue>
2.定义一个整数队列对象:queue<int> myQe;
3.定义一个整数队列对象数组:queue<int> myQA[10];
4.入队操作:myQe.push(itemp);
5.出队操作:myQe.pop();
6.获取队头元素: itemp = myQe.front();
7.判断队列是否为空:myQe.empty();
输入
第一行输入先输入n表示客户数量
第二行输入每个客户的类型,数据之间用用空格隔开
第三行输入每个客户的办理时间,数据之间用用空格隔开
输出
第一行输出A类客户的平均办理时间
第二行输出B类客户的平均办理时间
第三行输出C类客户的平均办理时间
样例输入
8
A B C B C A A A
10 20 30 40 50 60 70 80
样例输出
55
30
40
#include<queue>
#include<iostream>
using namespace std;
class queue_
{
public:
queue_();
~queue_();
void test();
private:
};
queue_::queue_()
{
}
queue_::~queue_()
{
}
void queue_::test()
{
queue<int>myqa;
queue<int>myqb;
queue<int>myqc;
int tempa = 0, tempb = 0, tempc = 0;
int n;
cin >> n;
int *every_time= new int[n];
char* every_type = new char[n];
for (int i = 0; i < n; i++)
{
cin >> every_type[i];
}
for (int i = 0; i < n; i++)
{
cin >> every_time[i];
}
for (int i = 0; i < n; i++)
{
switch (every_type[i])
{
case 'A':
{
myqa.push(every_time[i]);
tempa++; break;
}
case 'B':
{
myqb.push(every_time[i]);
tempb++; break;
}
case 'C':
{
myqc.push(every_time[i]);
tempc++; break;
}
}
}
int temp[100], average_time, alltime=0;
for (int i = 0; i < tempa; i++)
{
temp[i] = myqa.front();
myqa.pop();
alltime += temp[i];
}
average_time = alltime / tempa;
cout << average_time << endl;
alltime = 0;
for (int i = 0; i < tempb; i++)
{
temp[i] = myqb.front();
myqb.pop();
alltime += temp[i];
}
average_time = alltime / tempb;
cout << average_time << endl;
alltime = 0;
for (int i = 0; i < tempc; i++)
{
temp[i] = myqc.front();
myqc.pop();
alltime += temp[i]
}
average_time = alltime / tempc;
cout << average_time << endl;
}
int main()
{
queue_ q;
q.test();
}