设车辆厂生产了硬座车厢和软座车厢共n节(混合在一起),要求使用队列的基本操作,编程实现所有硬座车厢和所有软座车厢交替排列。例如硬座车厢用H来表示,软座车厢用S来表示,从键盘上输入8节车厢代号为SHHSSHSS ,输出为HSHSHSSS。若从键盘输入8节车厢代号为SHHSHHSH ,输出为HSHSHSHH。
输入格式:
第一行输入硬座和软座车厢共有的节数,2<=节数<=10;
第二行按节数输入车厢代号。
输出格式:
若车厢节数超出合法范围,输出“ERROR”,否则输出H和S车厢交替排列结果,注意输出结果以H开头。
输入样例:
8
SHHSSHSS
输出样例:
HSHSHSSS
代码示例如下:
#include<bits/stdc++.h>
using namespace std;
/*
算法描述:
1、设计两个队列容器,分别用来装“S”和“H”
2、当队列容器非空的时候,交替两个队列元素出队
*/
int main()
{
queue<char> hard;// 用STL是真的方便
queue<char> soft;
int num;
cin>>num;
string a;
cin>>a;//输入车厢性质
int length=a.size();
if(num<2||num>10||num!=length) cout<<"ERROR";
else
{
for(int i=0;i<num;i++)
{
if(a[i]=='S') soft.push('S');
if(a[i]=='H') hard.push('H');
}
while(!hard.empty()||!soft.empty())
{
if(!hard.empty())
{
cout<<hard.front();
hard.pop();
}
if(!soft.empty())
{
cout<<soft.front();
soft.pop();
}
}
}
cout<<"\n";
}