29.栈的push、pop序列(栈)
来源:互联网 发布:淘宝宝贝上架下架规律 编辑:程序博客网 时间:2024/05/17 23:15
题目:输入两个整数序列。其中一个序列表示栈的push顺序,
判断另一个序列有没有可能是对应的pop顺序。
为了简单起见,我们假设push序列的任意两个整数都是不相等的。
判断另一个序列有没有可能是对应的pop顺序。
为了简单起见,我们假设push序列的任意两个整数都是不相等的。
比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。
因为可以有如下的push和pop序列:
push 1,push 2,push 3,push 4,pop,push 5,pop,pop,pop,pop,
这样得到的pop序列就是4、5、3、2、1。
但序列4、3、5、1、2就不可能是push序列1、2、3、4、5的pop序列。
这里首先是以第一个数为基准,以后出现的序号比第一个数小的要一次减小,比第一个数大的要依次增大,这样就符合出栈顺序。
#include <iostream>bool bepop(int* output,int* input,int n);int pos(int* input,int n,int m);//求在出栈中的位置int main(){int input[9] = {1,2,3,4,5,6,7,8,9};int output[9] = {4,5,3,6,2,7,8,9,1};bool bnow = bepop(output,input,9);return 0;}bool bepop(int* output,int* input,int n){if (input == NULL)return false;int i =0 ;int posmin = -1 ;//比首位置小的点int posbig = -1 ;//比首位置大的点int posnow = -1;//首位置的点posnow = pos(input,n,output[i]);i++;for (;i<n;i++){int k = 0;k=pos(input,n,output[i]);if (k>posnow){if (posbig == -1)posbig = k ;else if (posbig>k)return false;else posbig = k;}else{if (posmin == -1)posmin = k;else if (posmin<k)return false ;else posmin = k;}}return true;}int pos(int* input,int n,int m){for (int i=0;i<n;i++)if (input[i] == m)return i;return -1;}
- 29.栈的push、pop 序列
- 29.栈的push、pop 序列
- 29.栈的push、pop序列
- 29.栈的push、pop 序列
- 栈的push、pop序列(29)
- 栈的push、pop序列
- 栈的push,pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 6th Jilin Province Collegiate Programming Contest - Mar 20, 2012——Problem A: Welcome 2012
- C++ 小学生加减法测验程序源代码
- 旧佳人的伤感非主流空间心情日志发布:想念,是一种忧伤的幸福
- 什么是云计算?
- codeblocks 运行时出现nothing to be done
- 29.栈的push、pop序列(栈)
- opencv 反向投影 cvCalcBackProject的示例 ,用图像中某中颜色的区域
- 分享一道笔试题目--关于static和extern变量的问题
- 第三款游戏制作前...
- java web应用程序的热部署
- 当他们说这些话时,爱就已经消失不在_伤感日志
- 30.在从1到n的正数中1出现的次数(数组)
- 自定义Dialog
- 不知道还要心痛多久_伤感的情绪日志