【题目】点击打开链接
【题解】简单的栈应用,看到网上一堆一堆的STL就烦,直接用多个数组做一下。
#pragma warning(disable:4786)
#include<iostream>
#include<algorithm>
#include<cmath>
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<queue>
#include<set>
#include<vector>
#include<string>
#include<ctime>
#include<string.h>
using namespace std;
#define pi acos(-1.0)
//#define LL __int64
typedef long long LL;
#define INF 0x7fffffffffffffff
#define bug puts("hear!")
#define inf 0x7fffffff
#define eps 1e-10
#define FRE freopen("in.txt","r",stdin)
#define E exp(1.0)
#define mod 1000000007
int main()
{ int n,i,j,k,t,r[23],stack[13];
char si[13],so[13];
while(scanf("%d",&n)!=EOF)
{
getchar();
memset(r,0,sizeof(r));
memset(stack,0,sizeof(stack));
scanf("%s%s",si,so);
stack[1]=si[0];r[0]=1;
for(k=t=j=1,i=0;so[i]!='\0';i++)
{
while(t<n)
{
if(j>0&&stack[j]==so[i]) //出栈
{
j--;
r[k++]=2;//记录进出栈的情况
break;
}
stack[++j]=si[t++];//进栈
r[k++]=1; //记录进出栈的情况
}
printf("%d\n",j);
if(stack[j]==so[i])//出栈
{
j--;
r[k++]=2; //记录进出栈的情况
}
}
n=n<<1;
if(k<n)
printf("No.\nFINISH\n");
else
{ printf("Yes.\n");
for(i=0;i<k;i++)
switch(r[i])
{
case 1:printf("in\n");break;
case 2:printf("out\n");break;
}
printf("FINISH\n");
}
}
return 0;
}