题目链接添加链接描述
首先再给你一个测试数据
6 123456 215436
因为要先进后出,很明显是栈,趁机学了一下栈(stack),这个题用到的知识也不多
#include<stdio.h>
#include<stack>
#include<string.h>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
char a[12],b[12];
int c[1000];
memset(c,0,sizeof(c));
scanf("%s",a);
scanf("%s",b);
stack<char> stk;//要把他放在这,每次都新建立
int cnt=0,cnp=0;
for(int i=0;i<n;i++)
{
stk.push(a[i]);
c[cnp++]=1;
while(stk.top()==b[cnt])//关键
{
c[cnp++]=0;
stk.pop();
cnt++;
if(stk.size()==0)
{
break;
}
}
}
if(stk.size()==0)
{
printf("Yes.\n");
for(int j=0;j<cnp;j++)
{
if(c[j]==1)
{
printf("in\n");
}
else{
printf("out\n");
}
}
printf("FINISH\n");
}
else{
printf("No.\n");
printf("FINISH\n");//注意输出时的格式,大小写,标点,这种情况建议直接从题中复制过来
}
}
return 0;
}