博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1051 Pop Sequence [模拟]
阅读量:5101 次
发布时间:2019-06-13

本文共 1226 字,大约阅读时间需要 4 分钟。

题目大意:给定一个最大容量为 M 的堆栈,将 N 个数字按 1, 2, 3, ..., N 的顺序入栈,允许按任何顺序出栈,则哪些数字序列是不可能得到的?

大致思路:一个数有两种情况:1)这个数字一进来就溜了 在违法的边缘试探 2)这个数先在栈里面待着伺机而动

根据题目所给的序列我们可以用一个队列q将其保存起来,接着按顺序让数字进来挨打,判断s.top()和q.top()是否相同,如果相同就一起push,如果不同则把这个数push进栈。这样如果顺序合法的话最后栈和队列都是空的。详见代码~

#include 
#define maxn 1005#define INF 0x3f3f3f3fusing namespace std;typedef long long ll;int n,m,k,x;int a[maxn];stack
st;queue
q;int main(){ cin>>n>>m>>k; while(k--) { while(!st.empty()) st.pop(); while(!q.empty()) q.pop(); for(int i=1;i<=m;i++) { cin>>x; q.push(x); } int p=0,flag=0; while(true) { if(!st.empty()&&!q.empty()&&st.top()==q.front()) { st.pop(); q.pop(); } else { p++; if(p>m) break; st.push(p); if(st.size()>n) { flag=1; break; } } } if(flag) cout<<"NO"<
View Code

 

转载于:https://www.cnblogs.com/FTA-Macro/p/10597068.html

你可能感兴趣的文章
Glassfish 设置时区
查看>>
补码与C++的应用
查看>>
PDO 代码
查看>>
Md5加密
查看>>
开源项目objective-zip
查看>>
最大似然估计
查看>>
Egret中的三种单例写法
查看>>
Java开发团队管理细则
查看>>
数列之和
查看>>
struts2与spring整合问题,访问struts2链接时,spring会负责创建Action
查看>>
CentOS 6.8 编译安装MySQL5.5.32
查看>>
Kafka的配置文件详细描述
查看>>
【转】设计模式六大原则(1):单一职责原则
查看>>
iOS 绝对值方法
查看>>
linux crontab
查看>>
你应该知道的Linux历史
查看>>
ssh 认证指定端口
查看>>
[译] 在Web API 2 中实现带JSON的Patch请求
查看>>
ModelAndView详解
查看>>
no such file or directory : 'users/shikx/xxx/xxx/Appirater.m'
查看>>