博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uva-11995 - I Can Guess the Data Structure!(栈,优先队列,队列,水题)
阅读量:4683 次
发布时间:2019-06-09

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

11995 - I Can Guess the Data Structure!

  There is a bag-like data structure, supporting two operations:

1 x Throw an element x into the bag.
2 Take out an element from the bag.
Given a sequence of operations with return values, you’re going to guess the data structure. It is
a stack (Last-In, First-Out), a queue (First-In, First-Out), a priority-queue (Always take out larger
elements first) or something else that you can hardly imagine!
Input
There are several test cases. Each test case begins with a line containing a single integer n (1 ≤ n ≤
1000). Each of the next n lines is either a type-1 command, or an integer 2 followed by an integer x.
That means after executing a type-2 command, we get an element x without error. The value of x
is always a positive integer not larger than 100. The input is terminated by end-of-file (EOF).
Output
For each test case, output one of the following:
stack It’s definitely a stack.
queue It’s definitely a queue.
priority queue It’s definitely a priority queue.
impossible It can’t be a stack, a queue or a priority queue.
not sure It can be more than one of the three data structures mentioned
above.
Sample Input
6
1 1
1 2
1 3
2 1
2 2
2 3
6
1 1
1 2
1 3
2 3
2 2
2 1
2
1 1
2 2
4
1 2
1 1
2 1
2 2
7
1 2
1 5
1 1
1 3
2 5
1 4
2 4
Sample Output
queue
not sure
impossible
stack
priority queue

题意:水。。。

代码:

#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;const int INF=0x3f3f3f3f;#define mem(x,y) memset(x,y,sizeof(x))#define SI(x) scanf("%d",&x)#define SL(x) scanf("%lld",&x)#define PI(x) printf("%d",x)#define PL(x) printf("%lld",x)#define P_ printf(" ")#define T_T while(T--)#define F(i,s,x) for(i=s;i
q; priority_queue
sq; stack
S; int a=1,b=1,c=1; int temp=0; while(n--){ SI(t);SI(x); if(temp)continue; if(t==1){ q.push(x); sq.push(x); S.push(x); } else{ if(q.empty())temp=1; if(temp)continue; if(q.front()!=x)a=0; if(sq.top()!=x)b=0; if(S.top()!=x)c=0; q.pop(); sq.pop(); S.pop(); } } if(temp||(a+b+c==0))puts("impossible"); else if(a+b+c>1)puts("not sure"); else if(a)puts("queue"); else if(b)puts("priority queue"); else if(c)puts("stack"); } return 0;}

  

转载于:https://www.cnblogs.com/handsomecui/p/5010531.html

你可能感兴趣的文章
[oracle] 如何使用myBatis在数据库中插入数据并返回主键
查看>>
PHP echo 和 print 语句
查看>>
第一讲 一个简单的Qt程序分析
查看>>
Centos 6.5下的OPENJDK卸载和SUN的JDK安装、环境变量配置
查看>>
poj 1979 Red and Black(dfs)
查看>>
【.Net基础03】HttpWebRequest模拟浏览器登陆
查看>>
UML-画类图与交互图的顺序
查看>>
6月7 考试系统
查看>>
mysql 基本操作
查看>>
zTree async 动态参数处理
查看>>
Oracle学习之常见错误整理
查看>>
HTC Sensation G14开盒
查看>>
lock_sga引起的ksvcreate :process(m000) creation failed
查看>>
数据库插入数据乱码问题
查看>>
OVER(PARTITION BY)函数用法
查看>>
altium annotate 选项设置 complete existing packages
查看>>
【模式识别与机器学习】——SVM举例
查看>>
【转】IT名企面试:微软笔试题(1)
查看>>
IO流入门-第十章-DataInputStream_DataOutputStream
查看>>
DRF的分页
查看>>