您的位置:首页 > 其它

PAT银行业务简单模拟

2016-07-12 08:53 204 查看
这个题主要需要考虑到两点

当A窗口没人时和当B窗口没人时就可以了

如测试案例2 1 3, 2 2 4
#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
queue<int>a;//A窗口的队列
queue<int>b;//B窗口的队列
int main(){
int n,k;
cin>>n;
for(int i = 0 ;i < n ;i++){
cin>>k;
if(k%2 == 0){
b.push(k);//偶数入B窗口
}else{
a.push(k);//奇数入A窗口
}
}
bool flag = true;
int  t    = 0;
while((a.size() != 0 || b.size() != 0)){//如果两个窗口都为空的话结束循环
if(flag){//首先考虑A的情况
if(a.size() == 0){//如果A是空的额,flag = false不执行下面的步骤
flag = false;
continue;
}
if(a.size() == 1 && b.size() == 0){//如果是最后一个换行
cout<<a.front()<<endl;
a.pop();
t++;
}else{
cout<<a.front()<<" ";
a.pop();
t++;
}
if(b.size() == 0){//如果b已经空了,那么下一次还是执行A
t    = 0;
flag = true;
}else if(t == 2 ){//如果B不为空而且A已经执行2次了,跳到B
t    = 0;
flag = false;
}
}
else{
if(a.size() == 0 && b.size() == 1){
cout<<b.front()<<endl;
b.pop();
}else{
cout<<b.front()<<" ";
b.pop();
}
if(a.size() == 0){//如果A为空,继续执行B
flag =false;
}else{
flag = true;
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PAT