习题3-10 排队等候
某社会福利机构组织一项活动,参加的对象分为两类,一类是老年人(年龄≥60岁),另一类是年轻人(年龄<60岁)。但参加该项活动要排队等候,为了照顾老年人,排队等候时,老年人排到前面,年轻人排在后面,当老年人到来排队时,排到前面老年人排队部分的后面,年轻人到来排队时,排到整个队伍的最后。对于参加活动的n个人(5≤n≤15),建立并输出这n个人的排队的情况。
输入格式:
首先输入一个整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据第一行输入一个整数n,表示有n个人,第二行输入n个整数ai(18≤ai≤80),表示活动参加者的年龄。
输出格式:
对于每组测试,在一行上输出排队的队伍信息(年龄),每两个数据之间留一个空格。
输入样例: 2 5 29 71 56 63 23 8 39 48 43 21 49 32 56 27 输出样例: 71 63 29 56 23 39 48 43 21 49 32 56 27
代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
解题代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int T,n;
int num;
list<int>young,old;
cin>>T;
while(T--){
cin>>n;
young.clear();
old.clear();
for(int i=0;i<n;i++){
cin>>num;
if(num>=60){
old.push_back(num);
}else{
young.push_back(num);
}
}
int l=0;
while(!old.empty()){
if(l==0){
cout<<old.front();
l++;
}else{
cout<<" "<<old.front();
}
old.pop_front();
}
while(!young.empty()){
if(l==0){
cout<<young.front();
l++;
}else{
cout<<" "<<young.front();
}
young.pop_front();
}
cout<<endl;
}
}
解题思路
也比较简单吧,用队列写,我觉着用两个队列写比较简单,也没多用别的,用了STL 库,不想写的太复杂,暂时就这样,挺简单的,大于等于60的放一个队列,小于60的放一个队列,然后输出的时候先输出大于等于60的队列。
|