题目很长,大意是给你两个序列,要你判断是否能够通过入栈出栈操作将第一个序列变为第二个序列。
考察栈的简单运用。
#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;
}
本文介绍了一个使用C++实现的栈操作模拟程序。该程序能够判断是否可以通过一系列入栈和出栈操作将一个序列转换为另一个序列。文章提供了一段详细的代码示例,并解释了如何进行栈操作的有效性验证。
&spm=1001.2101.3001.5002&articleId=72650925&d=1&t=3&u=8a4f4caa7f304bac9b42fedaff1a078a)
883

被折叠的 条评论
为什么被折叠?



