//第一眼一看应该就知道是栈;
//记得前今天队里的某位小朋友还问过我这个问题
//题意:
给定一个火车的进站的序列和出站的序列,判断能能否按照出站的序列出站,如果能的话请输出车子什么时候出站什么时候进站,如果不能按照出站的序列出站,就输出“NO‘吧;
//火车从A站到C站有两种方式:
1:
直接从A站行驶到C站;
2:
先行驶到B站,在进入C站;
原理什么的大家应该都还是懂的;
记得当时写这道题的麻烦点是在于进站和出站状态的记录;
详情在代码里面说吧;
#include<iostream>
#include<string>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
string a1,b1;
int stack1[20],i=0,flag1[20],j=0,k=0,top=0;//flga1[i]==表示进站,flag1[i]==2表示出站
cin>>a1>>b1;
stack1[top]=a1[0];//用数组模仿了下栈;
flag1[0]=1;
// top++;
while(j<n&&i<n)
{
if(top>=0&&b1[i]==stack1[top])
{
k++;//记录操作数
i++;
flag1[k]=2;
top--;
}
else
{
if(j==n)
break;
j++;
top++;
k++;
stack1[top]=a1[j];
flag1[k]=1;
}
}
if(j==n)
{
cout<<"No."<<endl;
}
else
{//输出进出栈方式
cout<<"Yes."<<endl;
for(i=0; i<=k; i++)
{
if(flag1[i]==1)
cout<<"in"<<endl;
if(flag1[i]==2)
cout<<"out"<<endl;
}
}
cout<<"FINISH"<<endl;
}
return 0;
}