题目描述

假设入栈序列为1 2 3 4 ... n,则出栈序列是1到n的一个排列。 假设用P表示入栈操作,用Q表示出栈操作,则栈操作过程可以表示为一个由P和Q构成的序列。 对一个给定的出栈序列,应该如何操作才能得到呢?

输入格式

输入由若干行构成,每一行是一组由空格间隔开的整数,第一个整数是序列的长度n(n不大于1000),后面是一个1到n的排列。

输出格式

对每一行输入,计算对应的栈操作序列,并输出此操作序列,如果不能输出此序列,则在不能操作的位置输出"error"。

输入样例

4 1 2 3 4
4 4 3 2 1
4 4 2 1 3
4 3 1 2 4

输出样例  

PQPQPQPQ
PPPPQQQQ
PPPPQ error
PPPQ error

代码展示 

#include<bits/stdc++.h>
#include<iostream>
#include<stack>
#include<string>
#include<cctype>
using namespace std;void simulation(int n,int a[]){stack<int>nature;stack<int>temp;string record="";//方便调试时查看for(int i=0;i<n;i++){nature.push(n-i);}int i=0;while(i<n){while(temp.empty()||temp.top()<a[i]){temp.push(nature.top());nature.pop();cout<<"P";record+="P";}if(!temp.empty() && temp.top()==a[i]){i++;cout<<"Q";record+="Q";temp.pop();}if(!temp.empty() && temp.top()>a[i]){cout<<" error";break;}}
}int main(){int n;while(cin>>n){int a[1000];//输入序列for(int i=0;i<n;i++){cin>>a[i];}simulation(n,a);cout<<endl;}return 0;
}

问题 B: 栈的操作问题相关推荐

  1. 顺序表输入栈元素c语言,C语言数据结构之栈简单操作

    C语言数据结构之栈简单操作 实验: 编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能: (1)初始化顺序栈 (2)插入元素 (3)删除栈顶元素 (4)取栈顶元素 (5)遍 ...

  2. Cortex-M3栈内存操作

    访问堆栈用堆栈指针,并且PUSH指令和POP指令默认使用SP. 堆栈的PUSH与POP 堆栈是一种存储器的使用模型.它由一块连续的内存和一个栈顶指针组成,用于实现"后进先出"的 ...

  3. 《Cortex-M0权威指南》之体系结构---栈空间操作

    <Cortex-M0权威指南>之体系结构---栈空间操作 转载请注明来源:cuixiaolei的技术博客 栈空间作为一种存储器使用机制,是"先入先出"的结构,在系统空间 ...

  4. c语言栈的实现以及操作_python模拟栈的操作实现非递归方式的快速排序算法

    本文首发地址: https://yishuihancheng.blog.csdn.net/article/details/76185032 欢迎关注我的博客[Together_CZ],我是沂水寒城! ...

  5. 数据结构——栈(栈结构、栈面试题、栈的操作、栈结构实现、进制的转换)

    目录 一.栈结构 二.栈面试题 四.栈的操作 1.push方法 2.pop方法 3.peek方法 4.isEmpty方法 5.size方法 五.栈结构实现 六.十进制转二进制 七.二进制.十六进制.十 ...

  6. c语言出栈入栈指针的管理,设计顺序栈有关入栈和出栈的操作算法

    问题描述: 设有两个栈s1.s2都釆用顺序栈方式,并且共享一个存储区[0, -, maxsize-1],为了尽量利用空间,减少溢出的可能,可釆用栈顶相向.迎面增长的存储方式.试设计s1.s2 有关入栈 ...

  7. OpenGL编程指南9:裁剪平面+glPushMatrix和glPopMatrix矩阵栈顶操作

    1.任意裁剪平面 Opengl中,除了视景体的立方体裁剪平面之外,另外还可以额外指定多达6个裁剪平面,对视景体做进一步限制.每一个平面都由平面公式定义:Ax+By+Cz+D = 0.裁剪平面的指定通过 ...

  8. 栈的初始化,入栈,出栈,遍历操作(代码实现) [数据结构][Java]

    栈的初始化,入栈,出栈,遍历操作(代码实现) 具体代码如下: package com.ffyc.stack;/*** 创建一个栈结构(使用数组实现)*/ public class ArrayStack ...

  9. 用单链表实现栈及操作

    包括:栈建立:入栈:出栈:打印栈: 构造节点: #define SLen (sizeof(struct stu))typedef struct stu {int a;struct stu *next; ...

  10. Lua 和 C 交互中虚拟栈的操作和遍历

    int lua_pcall(lua_State *L, int nargs, int nresults, int msgh)  * 以保护模式调用具有"nargs"个参数,&quo ...

最新文章

  1. 谷粒商城学习笔记——第一期:项目简介
  2. Nature子刊:干旱条件下土壤细菌网络的稳定性不如真菌网络
  3. python学习日记-2
  4. linux 之 rpm 网站
  5. Collection View Programming Guide for iOS---(四)---Using the Flow Layout
  6. php无法完成文件上传,php – Fine Uploader无法上传文件
  7. (转)【超详细教程】使用Windows Live Writer 2012和Office Word 2013 发布文章到博客园全面总结...
  8. tomcat(6)生命周期
  9. Mr.J--简易的判断输入两次密码是否一致(静态)
  10. 获取网页上数据(图片、文字、视频)-b
  11. base64转码原理
  12. android 应用程序结构是哪些
  13. 误删除数据恢复 plsql
  14. 坑向总结 | 树莓派调用打印机打印
  15. Python给定两个有序整数数组nums1和nums2,合并nums1和nums2为数组nums1
  16. 工业版树莓派 CM3
  17. 2022-2028全球与中国锂电池隔膜市场现状及未来发展趋势
  18. 主题模型LDA、NMF、LSA
  19. 病毒丨3601lpk劫持病毒分析
  20. 上海交通大学计算机学院录取分数线,湖南省多少名可以进上海交大?附上海交通大学近三年录取分数线...

热门文章

  1. 怎样给证件照快速改底色?告诉大家一个简单方法
  2. 百度智能云 API鉴权总结
  3. <金屋藏书>app 技术支持
  4. Python实战:导出聊天记录分析你和你的对象聊了什么
  5. 强制清理CDN(DNS)缓存方法
  6. Python游戏开发工程师的起步,几款游戏开发案例
  7. 什么样的人适合做外贸?能做好外贸?(非外贸零售)
  8. 从零开始搭建仿抖音短视频APP--开发用户业务模块(1)
  9. 2D/3D加速器概念
  10. 引用 CPU : 什么是超频,怎么给CPU超频?