#include<stdio.h>
#include<stack>
int a[1000];
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)!=EOF&&n)
{
int x,t;
stack < int > q;
while(scanf("%d",&x)&&x)
{
a[1]=x;
for(int i=2;i<=n;i++) scanf("%d",&a[i]);
int num=1;
for(int i=1;i<=n;i++)
{
q.push(i);
t=q.top();
while(t==a[num]&&num<=n)
{
num++;
q.pop();
if(!q.empty()) t=q.top();
}
}
if(num>n) printf("Yes/n");
else printf("No/n");
}
printf("/n");
}
return 0;
}
栈操作模拟问题解析
本文通过一个具体的程序实例,展示了如何使用 C++ 的标准模板库(STL)中的栈(stack)来解决一个关于序列生成的问题。该程序读取一系列整数,并尝试通过栈操作模拟特定的输出序列,以此判断给定序列是否可以通过相应的栈操作得到。
736

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



