这个题目主要就是模拟出栈和入栈,其实不难就是有点麻烦。话不多说,直接上代码:
#include <stdio.h>
#include <stack>
using namespace std;
int main(){
int n;int in[10],out[10];stack<int> S;
int result[20];char t1[10],t2[10];
while(scanf("%d\n",&n)!=EOF){
while(S.empty()==false)
S.pop();
scanf("%s",t1);
scanf("%s",t2);
for(int i=0;i<n;i++){
in[i]=t1[i]-'0';
out[i]=t2[i]-'0';
}
int index=0,rindex=0;
bool flag=true;
for(int i=0;i<n;i++){
if(flag==false)
break;
flag=false;
if(S.empty()==true){
while(index<n){
S.push(in[index]);
result[rindex++]=1;
if(in[index]==out[i]){
flag = true;index++;
result[rindex++]=0;
S.pop();
break;
}
index++;
}
}
else{
if(S.top()==out[i]){
result[rindex++]=0;
S.pop();flag=true;
}
else{
while(index<n){
S.push(in[index]);
result[rindex++]=1;
if(in[index]==out[i]){
flag=true;index++;
result[rindex++]=0;
S.pop();
break;
}
index++;
}
}
}
}
if(flag==false){
printf("No.\nFINISH\n");
}
else{
printf("Yes.\n");
for(int i=0;i<rindex;i++){
if(result[i]==0){
printf("out\n");
}
else
printf("in\n");
}
printf("FINISH\n");
}
}
return 0;
}