题意:就是火车进站问题,实际就是栈的模板
思路:那么我们用栈来解决这个问题,无非是入栈,出栈。那么我们先压入出栈序列的第一个元素,然后我们就需要要进行判断了。如果栈中元素等于预想出栈序列的头元素,那么就弹出栈中当前元素,(这个还需要记录出栈还是入栈,因为最后要打印,所以我们首先开一个布尔数组1代表入栈,0代表出栈),记录出栈,不相等那么就继续从入栈序列中继续压入元素,记录入栈。 后面的就是控制输出跟清栈了。
#include<bits/stdc++.h>
using namespace std;
stack<char> st;
bool flag[105];//1表示进 , 0表示出
int main(){
int n;
int i,j;
string s1,s2;
while(cin>>n>>s1>>s2){
int k = 0;
i=0,j=0;
st.push(s1[0]);
flag[k++] = 1;
while(i<n && j<n){
if(!st.empty() && st.top() == s2[j]){
j++;
st.pop();
flag[k++] = 0;
}
else{
st.push(s1[++i]);
flag[k++] = 1;
}
}
if(j!=n) cout<<"No."<<endl;
else{
cout<<"Yes."<<endl;
for(i=0;i<k;i++)
if(flag[i]) cout<<"in"<<endl;
else cout<<"out"<<endl;
}
cout<<"FINISH"<<endl;
}
while(!st.empty()){
st.pop();
}
return 0;
}