数据结构实验之栈七:出栈序列判定
来源:互联网 发布:水泥胶砂实验数据 编辑:程序博客网 时间:2024/05/13 22:57
给一个初始的入栈序列,其次序即为元素的入栈次序,栈顶元素可以随时出栈,每个元素只能入栈依次。输入一个入栈序列,后面依次输入多个序列,请判断这些序列是否为所给入栈序列合法的出栈序列。
例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个出栈序列,但4,3,5,1,2就不可能是该序列的出栈序列。假设压入栈的所有数字均不相等。
输入
第一行输入整数n(1<=n<=10000),表示序列的长度。
第二行输入n个整数,表示栈的压入顺序。
第三行输入整数t(1<=t<=10)。
后面依次输入t行,每行n个整数,表示要判断的每一个出栈序列。
输出
对应每个测试案例输出一行,如果由初始入栈序列可以得到该出栈序列,则输出yes,否则输出no。
示例输入
5
1 2 3 4 5
2
4 5 3 2 1
4 3 5 1 2
示例输出
yes
no
题解:判断出栈顺序,栈顶元素可以随时出栈,用栈顶元素和出栈序列进行比较,如果不相等,继续入栈,直到相等为止,如果想等,栈顶元素出栈,然后在用新栈顶元素和下一个出栈序列元素比较。
例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个出栈序列,但4,3,5,1,2就不可能是该序列的出栈序列。假设压入栈的所有数字均不相等。
输入
第一行输入整数n(1<=n<=10000),表示序列的长度。
第二行输入n个整数,表示栈的压入顺序。
第三行输入整数t(1<=t<=10)。
后面依次输入t行,每行n个整数,表示要判断的每一个出栈序列。
输出
对应每个测试案例输出一行,如果由初始入栈序列可以得到该出栈序列,则输出yes,否则输出no。
示例输入
5
1 2 3 4 5
2
4 5 3 2 1
4 3 5 1 2
示例输出
#include<bits/stdc++.h>using namespace std;int main(){ int n,i,m,test[10001],push[10001]; cin>>n; for(i=0; i<n; i++) cin>>test[i]; cin>>m; while(m--) { stack<int> st; for(i=0; i<n; i++) cin>>push[i]; int key_test=0,key_push=0; while(key_push<n) { if(st.empty()) st.push(test[key_test++]); else { if(st.top()!=push[key_push]) { if(key_test<n) st.push(test[key_test++]); else break; } else { st.pop(); key_push++; } } } if(st.empty()) cout<<"yes"<<endl; else cout<<"no"<<endl; } return 0;
yes
no
题解:判断出栈顺序,栈顶元素可以随时出栈,用栈顶元素和出栈序列进行比较,如果不相等,继续入栈,直到相等为止,如果想等,栈顶元素出栈,然后在用新栈顶元素和下一个出栈序列元素比较。
0 0
- 数据结构实验之栈七:出栈序列判定
- SDUT3334数据结构实验之栈七:出栈序列判定
- 数据结构实验之栈七:出栈序列判定
- 数据结构实验之栈七:出栈序列判定
- 数据结构实验之栈七:出栈序列判定
- 数据结构实验之栈七:出栈序列判定
- 数据结构实验之栈七:出栈序列判定
- 数据结构实验之栈七:出栈序列判定
- 数据结构实验之栈七:出栈序列判定
- 数据结构实验之栈七:出栈序列判定
- 数据结构实验之栈七:出栈序列判定
- 数据结构实验之栈七:出栈序列判定
- 数据结构实验之栈七:出栈序列判定
- 数据结构实验之栈七:出栈序列判定
- 数据结构实验之栈七:出栈序列判定
- 数据结构实验之栈七:出栈序列判定
- 数据结构实验之栈七:出栈序列判定
- 数据结构实验之栈七:出栈序列判定
- news_found_msg
- (HDU 5802)2016 Multi-University Training Contest 6 Windows 10 (贪心)
- 数据结构上机测试2-1:单链表操作B
- hdu Keep In Touch
- 优先队列
- 数据结构实验之栈七:出栈序列判定
- 机器学习中的规则化之L0、L1和L2范数
- NYOJ-14 会场安排问题
- 第三章 3.25 3.26
- 解析web服务器日志文件
- JAVA反射详解
- 跟我一起写Makefile(1)--- 概述
- linux学习第三篇:yum安装lrzsz
- (十)、数组