栈的操作
来源:互联网 发布:python黑帽子 python3 编辑:程序博客网 时间:2024/06/16 15:37
问题 E 栈的操作问题
时间限制: 1 Sec 内存限制: 128 MB[提交]
题目描述
假设入栈序列为1 2 3 4 ... n,则出栈序列是1到n的一个排列。 假设用P表示入栈操作,用Q表示出栈操作,则栈操作过程可以表示为一个由P和Q构成的序列。 对一个给定的出栈序列,应该如何操作才能得到呢?
输入
输入由若干行构成,每一行是一组由空格间隔开的整数,第一个整数是序列的长度n(n不大于1000),后面是一个1到n的排列。
输出
对每一行输入,计算对应的栈操作序列,并输出此操作序列,如果不能输出此序列,则在不能操作的位置输出"error"。
样例输入
4 1 2 3 44 4 3 2 14 4 2 1 34 3 1 2 4
样例输出
PQPQPQPQPPPPQQQQPPPPQ errorPPPQ error
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#include<math.h>int a[100001];int top;int nu[100001];int head;int main(){ int num; int i; while(~scanf("%d",&num)){ top=-1; head=1; a[0]=0; for(i=0;i<num;i++){ scanf("%d",&nu[i]); } for(i=0;i<num;i++){ int t=nu[i]; top++; while(a[top-1]<t){ a[top]=head; head++; top++; printf("P"); } top--; if(a[top]==t){ printf("Q"); top--; } else if(a[top]>t){ printf(" error"); break; } } memset(a,0,sizeof(a)); memset(nu,0,sizeof(nu)); printf("\n"); } return 0;}
0 0
- 用栈操作实现队列的操作
- 栈的操作
- 栈的相关操作
- 顺序栈的操作
- 顺序栈的操作
- 顺序栈的操作
- 数据结构--栈的操作
- 栈的简单操作
- 栈的基本操作
- 链栈的操作
- 栈的相关操作
- 栈的基本操作
- 栈的操作
- 栈 的基本操作。
- 栈的简单操作
- 栈的相关操作
- 栈的基本操作
- 栈的基本操作
- Java异常处理的一些常见问题
- 2.2.2 学习心态的分别
- Android AlarmManager.set()方法参数相关
- spring+springmvc+mybatis详细运转流程
- 浅析Java中的访问权限控制
- 栈的操作
- 不同服务器数据库之间的数据操作,数据同步
- 回文词(UVa401)
- C++中负数的位操作
- 电脑常识和电脑常见故障
- java面向对象三大特征之多态
- Hibernate主配置文件hibernate.cfg.cml详解
- 基于Sublime Text搭建Python IDE
- 2.2.3 X Window的学习