肯定先看第二个序列,如果第二个序列等于栈头,那就出栈,比较下一个
如果不等于,并且第一个序列还没结束,那就将第一个序列入栈。
两个条件都不满足,那就错误。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<stack>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)==1){
string s1,s2;
cin>>s1;
cin>>s2;
int A[100];
int B[100];int ans[100];
for(int i=0;i<n;i++){
A[i]=s1[i]-'0';
B[i]=s2[i]-'0';
ans[i]=-1;
}
stack<int> s;
int i=0,j=0;int ok=1;
int cnt=0;
while(j<n){
if(!s.empty() && B[j]==s.top()){
ans[cnt++]=0;
s.pop();
j++;
}
else if(i<n){
ans[cnt++]=1;
s.push(A[i]);
i++;
}else{
ok=0;
break;
}
}
if(ok){
printf("Yes.\n");
for(int i=0;i<n*2;i++){
if(ans[i]==0) printf("out\n");
else if(ans[i]==1) printf("in\n");
}
printf("FINISH\n");
}
else {
printf("No.\n");
printf("FINISH\n");
}
}
return 0;
}