问题 B: 栈的操作问题
题目描述
假设入栈序列为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: 栈的操作问题相关推荐
- 顺序表输入栈元素c语言,C语言数据结构之栈简单操作
C语言数据结构之栈简单操作 实验: 编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能: (1)初始化顺序栈 (2)插入元素 (3)删除栈顶元素 (4)取栈顶元素 (5)遍 ...
- Cortex-M3栈内存操作
访问堆栈用堆栈指针,并且PUSH指令和POP指令默认使用SP. 堆栈的PUSH与POP 堆栈是一种存储器的使用模型.它由一块连续的内存和一个栈顶指针组成,用于实现"后进先出"的 ...
- 《Cortex-M0权威指南》之体系结构---栈空间操作
<Cortex-M0权威指南>之体系结构---栈空间操作 转载请注明来源:cuixiaolei的技术博客 栈空间作为一种存储器使用机制,是"先入先出"的结构,在系统空间 ...
- c语言栈的实现以及操作_python模拟栈的操作实现非递归方式的快速排序算法
本文首发地址: https://yishuihancheng.blog.csdn.net/article/details/76185032 欢迎关注我的博客[Together_CZ],我是沂水寒城! ...
- 数据结构——栈(栈结构、栈面试题、栈的操作、栈结构实现、进制的转换)
目录 一.栈结构 二.栈面试题 四.栈的操作 1.push方法 2.pop方法 3.peek方法 4.isEmpty方法 5.size方法 五.栈结构实现 六.十进制转二进制 七.二进制.十六进制.十 ...
- c语言出栈入栈指针的管理,设计顺序栈有关入栈和出栈的操作算法
问题描述: 设有两个栈s1.s2都釆用顺序栈方式,并且共享一个存储区[0, -, maxsize-1],为了尽量利用空间,减少溢出的可能,可釆用栈顶相向.迎面增长的存储方式.试设计s1.s2 有关入栈 ...
- OpenGL编程指南9:裁剪平面+glPushMatrix和glPopMatrix矩阵栈顶操作
1.任意裁剪平面 Opengl中,除了视景体的立方体裁剪平面之外,另外还可以额外指定多达6个裁剪平面,对视景体做进一步限制.每一个平面都由平面公式定义:Ax+By+Cz+D = 0.裁剪平面的指定通过 ...
- 栈的初始化,入栈,出栈,遍历操作(代码实现) [数据结构][Java]
栈的初始化,入栈,出栈,遍历操作(代码实现) 具体代码如下: package com.ffyc.stack;/*** 创建一个栈结构(使用数组实现)*/ public class ArrayStack ...
- 用单链表实现栈及操作
包括:栈建立:入栈:出栈:打印栈: 构造节点: #define SLen (sizeof(struct stu))typedef struct stu {int a;struct stu *next; ...
- Lua 和 C 交互中虚拟栈的操作和遍历
int lua_pcall(lua_State *L, int nargs, int nresults, int msgh) * 以保护模式调用具有"nargs"个参数,&quo ...
最新文章
- 谷粒商城学习笔记——第一期:项目简介
- Nature子刊:干旱条件下土壤细菌网络的稳定性不如真菌网络
- python学习日记-2
- linux 之 rpm 网站
- Collection View Programming Guide for iOS---(四)---Using the Flow Layout
- php无法完成文件上传,php – Fine Uploader无法上传文件
- (转)【超详细教程】使用Windows Live Writer 2012和Office Word 2013 发布文章到博客园全面总结...
- tomcat(6)生命周期
- Mr.J--简易的判断输入两次密码是否一致(静态)
- 获取网页上数据(图片、文字、视频)-b
- base64转码原理
- android 应用程序结构是哪些
- 误删除数据恢复 plsql
- 坑向总结 | 树莓派调用打印机打印
- Python给定两个有序整数数组nums1和nums2,合并nums1和nums2为数组nums1
- 工业版树莓派 CM3
- 2022-2028全球与中国锂电池隔膜市场现状及未来发展趋势
- 主题模型LDA、NMF、LSA
- 病毒丨3601lpk劫持病毒分析
- 上海交通大学计算机学院录取分数线,湖南省多少名可以进上海交大?附上海交通大学近三年录取分数线...