您的位置:首页 > 产品设计 > UI/UE

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

2017-03-22 18:22 337 查看
将1~n压入最多为m元素的栈
给出k个出栈序列,问你是否能够实现。
能输出YES
否则NO
模拟一遍即可,水题。


#include<iostream>
#include<cstdio>
#include<string.h>
#include<algorithm>
usingnamespacestd;

constintmaxn=1005;
intm,n,k;
intseq[maxn];
intstacks[maxn];
intrear=0;

intmain()
{
intval;
scanf("%d%d%d",&m,&n,&k);
for(inti=0;i<k;i++){
for(intj=0;j<n;j++){
scanf("%d",&seq[j]);
}
rear=0;//对尾
intnum=0;//要压入的数
boolflag=true;
for(intj=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");
}
return0;
}


ViewCode


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: