PAT1051. Pop Sequence (25)

#include <iostream>
#include <stack>
using namespace std;
int sizeMax,n,k;
stack<int> sta;
int queueNum;
int num;
int j;int flag=0;
int main(){
	cin>>sizeMax>>n>>k;
	while(k--){
		while(!sta.empty()){sta.pop();}
		queueNum=1;
		flag=0;
		for(int i=0;i<n;i++){
			cin>>num;
			if(flag){continue;}
			if(num>queueNum){
				for(j=queueNum;j<num;j++){
					sta.push(j);
				}
				if(sta.size()>=sizeMax){
					flag=1;
					continue;
				}
				queueNum=num+1;
			}else if(num<queueNum){
				int top=sta.top();
				if(top!=num){
					flag=1;
					continue;
				}
				sta.pop();
			}else{
				queueNum++;
			}
		}
		if(flag){
			cout<<"NO"<<endl;
		}else{
			cout<<"YES"<<endl;
		}
	}
	return 0;
}
时间: 2024-10-03 18:19:10

PAT1051. Pop Sequence (25)的相关文章

1051. Pop Sequence (25)

1051. Pop Sequence (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue 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

PAT 1051. Pop Sequence (25)

1051. Pop Sequence (25) 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

PAT 甲级 1051 Pop Sequence (25 分)(模拟栈,较简单)

1051 Pop Sequence (25 分) 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

PAT1051. Pop Sequence

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 ca

1051 Pop Sequence (25分)

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 ca

数据结构练习 02-线性结构3. Pop Sequence (25)

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 ca

A1051. Pop Sequence (25)

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 ca

Pop Sequence (25)

已知栈的输入序列,给出一个输出序列,检查能否按此顺序输出? 怎么做? 输入 1 2 3 4 5 输出 1 4 3 2 5 最大容量3 我们把输入和输出都定义为队列( 模仿输入输出流嘛 ) 再定义一个堆栈,上面的例子该怎么检查呢? 要输出的第一个数是1 我就从in里取数到stack,直取stack的top元素是1为止 in 2 3 4 5 out 1 4 3 2 5 stack 1 这时同时pop out和stack in 2 3 4 5 out 4 3 2 5 stack 要输出4 我就从in里

PAT甲题题解-1051. Pop Sequence (25)-堆栈

将1~n压入最多为m元素的栈 给出k个出栈序列,问你是否能够实现. 能输出YES 否则NO 模拟一遍即可,水题. #include <iostream> #include <cstdio> #include <string.h> #include <algorithm> using namespace std; const int maxn=1005; int m,n,k; int seq[maxn]; int stacks[maxn]; int rear=