注解
1、栈的应用。
2、队列的应用。
3、STL。
4、具体到本题而言,每次输入一个字符时,与输出队列的队头比较(栈输出的顺序,其实用一个队列表示更好,因为主要操作是取队头),如果相同,则该字符串出栈、出队列。直到把输入字符串读入完成,如果输出队列为空,则表明可以按该顺序出栈。否则,表明不可按该顺序出栈。每次的in和out操作,都记录在一个vector中,如果最后答案是yes,就把vector中的内容输出,否则不输出。
代码
#include <iostream>
#include <stack>
#include <queue>
#include <vector>
using namespace std;
int main() {
int n;
string s1, s2;
while(cin>>n>>s1>>s2) {
stack<char> s;
queue<char> q;
vector<string> v;
int popPos = 0;
for(int i=0; i<n; i++){
q.push(s2.at(i));
}
for(int i=0; i<n; i++) {
s.push(s1.at(i));
v.push_back("in");
while(s.size()>0 && s.top()==q.front()) {
s.pop();
v.push_back("out");
q.pop();
}
}
if(s.size()==0) {
cout<<"Yes."<<endl;
for(int i=0; i<v.size(); i++) {
cout<<v.at(i)<<endl;
}
cout<<"FINISH"<<endl;
} else {
cout<<"No."<<endl;
cout<<"FINISH"<<endl;
}
}
return 0;
}