题目很长,大意是给你两个序列,要你判断是否能够通过入栈出栈操作将第一个序列变为第二个序列。
考察栈的简单运用。
#include<iostream>
using namespace std;
int main()
{
char s1[12],s2[12],stack[12];
int top,n,i,j,k;
int gg[22];
while(cin>>n>>s1>>s2)
{
top=-1;j=k=0;
memset(gg,0,sizeof(gg));
for(i=0;i<n;i++)
{
stack[++top]=s1[i];gg[k++]=0;//进栈,gg[k++]=0代表in操作。
while(stack[top]==s2[j]&&top!=-1)
{
gg[k++]=1;j++;top--;//出栈,1代表out操作。
}
}
if(j==n)
{
cout<<"Yes."<<endl;
for(i=0;i<k;i++)
if(gg[i]==0)cout<<"in"<<endl;
else cout<<"out"<<endl;
cout<<"FINISH"<<endl;
}
else
cout<<"No."<<endl<<"FINISH"<<endl;
}
return 0;
}