题意:就是火车进站问题,实际就是栈的模板

思路:那么我们用栈来解决这个问题,无非是入栈,出栈。那么我们先压入出栈序列的第一个元素,然后我们就需要要进行判断了。如果栈中元素等于预想出栈序列的头元素,那么就弹出栈中当前元素,(这个还需要记录出栈还是入栈,因为最后要打印,所以我们首先开一个布尔数组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;
}