首页 > 代码库 > PAT甲题题解-1051. Pop Sequence (25)-堆栈
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=0; int main() { int val; scanf("%d %d %d",&m,&n,&k); for(int i=0;i<k;i++){ for(int j=0;j<n;j++){ scanf("%d",&seq[j]); } rear=0;//对尾 int num=0;//要压入的数 bool flag=true; for(int j=0;j<n;j++){ while(num<seq[j] && rear<m){ stacks[rear++]=++num; } //如果栈内元素已满,则false if(rear>=m && num!=seq[j]){ flag=false; break; } //对尾是否是要pop的元素 if(stacks[rear-1]==seq[j]) rear--; else{ flag=false; break; } } if(flag) printf("YES\n"); else printf("NO\n"); } return 0; }
PAT甲题题解-1051. Pop Sequence (25)-堆栈
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。