uva 11995 猜猜数据结构
2015-09-07 12:49
267 查看
题目链接:
https://uva.onlinejudge.org/external/119/11995.pdf
https://uva.onlinejudge.org/external/119/11995.pdf
//我用模拟来做,这个题目要注意,即使容器(queue/stack/priority_queue)空了 输入也可能要求你取出元素, //这是因为: 可能是其他容器,其他什么奇怪的东西。 stack <int >st; queue<int >q; priority_queue<int > Q; bool ok[3]; int n; char s[3][20]={ "stack","queue","priority queue"}; inline void push(int x) { st.push(x); q.push(x); Q.push(x); } inline void out(int y) { if(!st.empty()&&ok[0]) { int x=st.top();st.pop(); if(x!=y) ok[0]=0; } else ok[0]=0; if(!q.empty()&&ok[1]) { int x=q.front();q.pop(); if(x!=y) ok[1]=0; } else ok[1]=0; if(!Q.empty()&&ok[2] ) { int x=Q.top(); Q.pop(); if(x!=y) ok[2]=0; } else ok[2]=0; } int main() { int o,x; while(~scanf("%d",&n)) { while(!st.empty()) st.pop(); while(!q.empty()) q.pop(); while(!Q.empty()) Q.pop(); memset(ok,1,sizeof ok); for(int i=1;i<=n;i++) { scanf("%d%d",&o,&x); if(o==1) push(x); else out(x); } int cnt=0,p; for(int i=0;i<=2;i++) { if(ok[i]) cnt++,p=i; } if(cnt==1) printf("%s\n",s[p]); else if(!cnt) puts("impossible"); else puts("not sure"); } return 0; }
相关文章推荐
- 数据结构之栈 C++实现
- ptree数据结构分析
- 算法导论基础篇:两个队列实现一个栈
- 数据结构之自建算法库——顺序表
- 数据结构中基本运算验证性实践路线建议——以顺序表为例
- 数据结构之---C语言实现直接插入排序
- 数据结构之---C语言实现选择排序
- 数据结构之---C语言实现冒泡排序
- 【数据结构】邻接表的3种常用表示方式——C++描述
- 数据结构基础 希尔排序 之 算法复杂度浅析
- 数据结构与算法
- 数据结构—再回首01
- 数据结构:表、栈、和队列(1)——抽象数据类型
- 数据结构---字符串(2)
- 数据结构与算法-字符串反转
- 数据结构专题——线段树
- 数据结构中的查找算法-哈希表(3)
- 数据结构中的查找算法-动态查找表(2)
- 算法导论基础篇:两个栈实现一个队列
- 关于SparkMLlib的基础数据结构 Spark-MLlib-Basics