题意是给定火车进站的序列和出站的序列,问能否完成转换,若能输出过程。
和另一道以火车进站为背景的栈应用题类似,但增加了对于过程的输出,只需要多记录一下进出站顺序即可。
#include <bits/stdc++.h>
using namespace std;
int main()
{
std::ios::sync_with_stdio(false);
int n,pos,cnt,vis[];
stack<char> q;
char come[],go[];
while(cin >> n)
{
cin >> come >> go;
pos = ;
cnt = ;
while(!q.empty()) q.pop();
memset(vis,-,sizeof(vis));
for(int i = ; i < n; i++)
{
vis[cnt++] = ;
q.push(come[i]);
while(!q.empty()&&q.top() == go[pos])
{
q.pop();
pos++;
vis[cnt++] = ;
}
}
if(pos==n)
{
cout << "Yes.\n";
for(int i = ; i < cnt; i++)
{
if(vis[i]) cout << "in\n";
else cout << "out\n";
}
}
else cout << "No.\n";
cout << "FINISH\n";
}
return ;
}