题目信息:
输入:
输出:
样例分析请见原题地址
原题地址——Train Problem I
源代码:
/*********************
火车排列出轨问题
**********************/
#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main()
{
int n;
while(cin>>n){
string s1,s2,s3[15];//记录进出轨的操作
cin>>s1>>s2;
stack<char> a;//缓冲轨
int i=0,j=0,k=0;
while(i<s1.size()){
a.push(s1[i]);
s3[k++]="in";//每次必须先进轨,进行调头
//cout<<"in"<<endl;
while(j<s2.size()){
if(a.size()&&a.top()==s2[j]){//非空且相等
a.pop();//出轨
++j;//比较下一个
s3[k++]="out";//记录出轨操作
//cout<<"out"<<endl;
}
else break;//else跳出比较循环
}
++i;//下一列车进轨
}
if(!a.size()) {//if(缓冲轨为空则可以完成)"Yes"
cout<<"Yes."<<endl;
for(i=0;i<k;i++)
cout<<s3[i]<<endl;
cout<<"FINISH"<<endl;
}
else {//不能完成"No"
cout<<"No."<<endl;
cout<<"FINISH"<<endl;
}
}
return 0;
}