PTA栈

PTA
7-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 can obtain 1, 2, 3, 4, 5, 6, 7 from the stack, but not 3, 2, 1, 7, 5, 6, 4.
栈的开始
天梯赛栈题

在这里插入代码片
#include<iostream>
#include<string>
#include<map>
#include<set>
#include<cstdio>
#include<stack>
using namespace std;
int main(){
	int m,n,k;
	scanf("%d%d%d",&m,&n,&k);
	int a[2000];
	int i;
	stack<int>st;
	while(k--){
		int cur=1;//数组的下标 
		int flag=1;//输出的标志 
		while(!st.empty()){
			st.pop();
		}
		for(i=1;i<=n;i++){
			scanf("%d",&a[i]);
		}
		for(int i=1;i<=n;i++){ // 入栈操作 
			st.push(i);
			if(st.size()>m){
				flag=0;
				break;
			}
			while(!st.empty() && st.top()==a[cur]){ //配对 
				st.pop();
				cur++;
			}
		}
		if(st.empty() && flag==1)printf("YES\n");//注意加上栈为空的条件,需要把栈的元素都剔除 
		else printf("NO\n");
	}
    return 0;
}

发布了13 篇原创文章 · 获赞 1 · 访问量 144

猜你喜欢

转载自blog.csdn.net/safafs/article/details/105111807
PTA