#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main()
{
int n, i, j, k;
bool p[102];//0出桟1进桟
char c1[102], c2[102];//c1进桟序列,c2出栈序列
while(cin >> n >> c1 >> c2)
{
i=j=k=0;
stack<char>train;
while(j < n)
{
if(!train.empty() && train.top() == c2[j])//如果桟不为空且顶端为c2
{
j++;
train.pop();//出栈
p[k++] = 0;
}
else
{
if(i == n) break;
train.push(c1[i++]);//压栈
p[k++] = 1;
}
}
if( j!=n)
cout << "No." << endl;
else
{
cout << "Yes." << endl;
for( i=0; i < k; i++)
{
if(p[i])
cout << "in" << endl;
else
cout << "out" << endl;
}
}
cout << "FINISH" << endl;
}
return 0;
}
hdu 1022 Train Problem I 简单堆栈
最新推荐文章于 2021-06-04 17:00:41 发布