Pop Sequeue
2022/1/12 23:35:07
本文主要是介绍Pop Sequeue,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目描述
Given a stack which can keep M numbers at most. Push N numbers in the order of 1,2,3...,N and pop randomly. You are supposed to tell if a given sequence of numbers is a possible pop sequence of the stack. For example, if M is 5 and N is 7, we can obtain 1,2,3,4,5,6,7 from the stack, but not 3,2,1,7,5,6,4.
输入格式
Each input file contains one test case. For each case, the first line contains 3 numbers(all no more than 1000): M(the maximum capacity of the stack), N(the length of push sequence), and K(the number of pop sequence to be checked). Then K lines follow, each contains a pop sequence of N numbers. All the numbers in a line are separated by a space.
输出格式
For each pop sequence, print in one line "YES" if it is indeed a possible pop sequence of the stack, or "NO" if else.
输入样例 5 7 3 1 2 3 4 5 6 7 3 2 1 7 5 6 4 5 6 4 3 7 2 1 输出样例 YES NO YES
题意
有一个容量限制为M的栈,先分别把1,2,3,n依次入栈,并给出一系列出栈顺序,问这些出栈顺序是否可能?
思路
按照题目的要求进行模拟,将1~n依次入栈,在入栈的过程中如果入栈的元素恰好等于出栈序列当前等待出栈的元素,那么就让栈顶元素出栈,同时把出栈序列当前等待出栈的元素位置标记后移1位。此时只要栈顶元素依然等于出栈序列当前等待出栈的元素,则继续出栈。
代码
1 #include<iostream> 2 #include<stack> 3 using namespace std; 4 const int maxn = 1010; 5 int arr[maxn]; //保存题目给的出栈序列 6 stack<int> st; //定义栈st,用以存放int型元素 7 int main() 8 { 9 int m, n, T; 10 cin>>m>>n>>T; 11 while(T--){ //循环T次 12 while(!st.empty()) //清空栈 13 st.pop(); 14 for(int i=1;i<=n;i++) //读入数据 15 cin>>arr[i]; 16 int current = 1; //指向出栈序列中的待出栈元素 17 bool flag = true; 18 for(int i=1;i<=n;i++){ 19 st.push(i); //把i压入栈 20 if(st.size()>m){ //如果此时栈中元素个数大于容量m,则序列非法 21 flag=false; 22 break; 23 } 24 //栈顶元素与出栈序列当前位置的元素相同时 25 while(!st.empty()&&st.top()==arr[current]){ 26 st.pop(); //反复弹栈并令current++ 27 current++; 28 } 29 } 30 if(st.empty()==true&&flag==true){ 31 cout<<"TES"<<endl; 32 } 33 else{ 34 cout<<"NO"<<endl; 35 } 36 } 37 return 0; 38 }
这篇关于Pop Sequeue的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-27[开源] 一款轻量级的kafka可视化管理平台
- 2024-10-23Kafka消息丢失资料详解:初学者必看教程
- 2024-10-23Kafka资料新手入门指南
- 2024-10-23Kafka解耦入门:新手必读教程
- 2024-10-23Kafka入门:新手必读的简单教程
- 2024-10-23Kafka入门:新手必读的简单教程
- 2024-10-23Kafka消息丢失入门:新手必读指南
- 2024-10-23Kafka消息队列入门:新手必看的简单教程
- 2024-10-23Kafka消息队列入门与应用
- 2024-10-23Kafka重复消费入门:轻松掌握Kafka重复消息处理技巧