https://vjudge.net/problem/UVA-11995

题意:

现在有一个未知的数据结构,给出n个操作,如果说操作为1的话,给出一个x放入这个结构,如果说操作为2的话,表示从里面拿出来了一个数x。

现在问是否有一种数据结构符合这组数据的操作,给定的数据结构有栈,队列,优先队列。

思路:

由于有了现成的stl,那么直接模拟算算是否符合就行了,注意容器要判断容器是否为空。

代码:

  1 #include <stdio.h>
  2 #include <stack>
  3 #include <queue>
  4 using namespace std;
  5
  6 stack<int> s;
  7 queue<int> q;
  8 priority_queue<int> pq;
  9
 10 struct node
 11 {
 12     int op;
 13     int x;
 14 } a[1005];
 15
 16 int main()
 17 {
 18     int n;
 19
 20     while (scanf("%d",&n) != EOF)
 21     {
 22         while (!s.empty()) s.pop();
 23         while (!q.empty()) q.pop();
 24         while (!pq.empty()) pq.pop();
 25
 26         for (int i = 0;i < n;i++)
 27         {
 28             scanf("%d%d",&a[i].op,&a[i].x);
 29         }
 30
 31         bool f = 0,ff = 0,fff = 0;
 32
 33         for (int i = 0;i < n;i++)
 34         {
 35             if (a[i].op == 1)
 36             {
 37                 s.push(a[i].x);
 38             }
 39             else
 40             {
 41                 int tmp;
 42
 43                 if (s.empty())
 44                 {
 45                     f = 1;break;
 46                 }
 47                 else if (!s.empty()) tmp = s.top(),s.pop();
 48
 49                 if (tmp != a[i].x)
 50                 {
 51                     f = 1;break;
 52                 }
 53             }
 54         }
 55
 56         for (int i = 0;i < n;i++)
 57         {
 58             if (a[i].op == 1)
 59             {
 60                 q.push(a[i].x);
 61             }
 62             else
 63             {
 64                 if (q.empty())
 65                 {
 66                     ff = 1;break;
 67                 }
 68                 else if (!q.empty())
 69                 {
 70                     int tmp = q.front();q.pop();
 71
 72                     if (tmp != a[i].x)
 73                     {
 74                         ff = 1;break;
 75                     }
 76                 }
 77             }
 78         }
 79
 80         for (int i = 0;i < n;i++)
 81         {
 82             if (a[i].op == 1) pq.push(a[i].x);
 83             else
 84             {
 85                 if (pq.empty())
 86                 {
 87                     fff = 1;break;
 88                 }
 89                 else if (!pq.empty())
 90                 {
 91                     int tmp = pq.top();pq.pop();
 92
 93                     if (tmp != a[i].x)
 94                     {
 95                         fff = 1;break;
 96                     }
 97                 }
 98             }
 99         }
100
101         int cnt = 0;
102
103         if (f) cnt++;
104         if (ff) cnt++;
105         if (fff) cnt++;
106
107         if (cnt == 3) printf("impossible\n");
108         else if (cnt <= 1) printf("not sure\n");
109         else
110         {
111             if (!f) printf("stack\n");
112             if (!ff) printf("queue\n");
113             if (!fff) printf("priority queue\n");
114         }
115     }
116
117
118
119     return 0;
120 }

转载于:https://www.cnblogs.com/kickit/p/7635938.html

uva 11995 I Can Guess the Data Structure!相关推荐

  1. UVA 11995 I Can Guess the Data Structure! STL

    题目链接: UVA很难登上去吧...... 题目大意: 给你几组输入与输出让你判断是栈,队列, 堆, 还是不确定, 还是哪种也不是 解题思路: 这题看起来很简单, 搞几个标准STL, 和结果一对比就知 ...

  2. uva 11995——I Can Guess the Data Structure!

    题意:给定一个包,然后给定这个包的一些操作以此来判断包的数据结构类型. 思路:直接按照stl来模拟即可. code: #include <bits/stdc++.h> using name ...

  3. LeetCode Two Sum III - Data structure design

    原题链接在这里:https://leetcode.com/problems/two-sum-iii-data-structure-design/ 题目: Design and implement a ...

  4. leetcode 211. Add and Search Word - Data structure design Trie树

    题目链接 写一个数据结构, 支持两种操作. 加入一个字符串, 查找一个字符串是否存在.查找的时候, '.'可以代表任意一个字符. 显然是Trie树, 添加就是正常的添加, 查找的时候只要dfs查找就可 ...

  5. leetcode Add and Search Word - Data structure design

    我要在这里装个逼啦 class WordDictionary(object):def __init__(self):"""initialize your data str ...

  6. TRIE - Data Structure

    Introduction 介绍 Trie,又称单词查找树,是一种树形结构,用于保存大量的字符串.它的优点是:利用字符串的公共前缀来节约存储空间. Trie is an ordered tree dat ...

  7. 牛客小白月赛11:Rinne Loves Data Structure

    Rinne Loves Data Structure 思路 我们插入的位置大概分了四种: 第一种 显然我们找到比当前插入的值的pre,也就是比当前节点大的最小值. 第二种 我们只要找到当前节点的suc ...

  8. HDU - 7072 Boring data structure problem 双端队列 + 思维

    传送门 文章目录 题意: 思路: 题意: 你需要实现如下四个操作 q≤1e7q\le1e7q≤1e7 思路: 做的时候想了个链表的思路让队友写了,懒. 看了题解感觉题解还是很妙的. 你需要快速插入一个 ...

  9. HDU - 6967 G I love data structure 线段树维护矩阵 + 细节

    传送门 文章目录 题意: 思路: 题意: 给你两个长度为nnn的数组a,ba,ba,b,你需要完成如下四种操作: 思路: 思路还是比较简单的,首先建一颗线段树,线段树中维护a,b,a2,b2,aba, ...

最新文章

  1. golang 多行字符串 字符串太长分行写
  2. CertEnroll::CX509Enrollment::p_InstallResponse:ASN1 bad tag value met. 0x8009310b
  3. JdbcTemplate中的query方法(代码)
  4. Http-tunnel突破单位网管封杀QQ、MSN端口的方法
  5. vs.net 中编译链接vc工程时的LNK171@mspdb140.dll错误处理
  6. 2012年11月04日春色满园关不住freeeim源码哇
  7. 关于msi格式的程序包的安装
  8. Redis,Memcache,MongoDb的特点与区别
  9. php岗位专业技能,PHP简历专业技能怎么写
  10. vertical-align和line-height的深入应用
  11. 4.1 编程语言的几个发展阶段
  12. Careercup | Chapter 3
  13. (转)直击马云虞锋闭门对话,3小时谈透未来变革大势,定调千亿美元目标
  14. Java集合---概述(1)
  15. php生成图形验证码的几种方法
  16. 华为android出现短路怎么办,华为手机无法开机原因解析及解决方法
  17. python傅立叶光顺_函数型数据分析若干方法及应用
  18. 智能制造与大数据平台
  19. 你的Web系统真的安全吗?
  20. CTA认证system_process定位联网未明示问题

热门文章

  1. 百万TPS高吞吐、秒级低延迟,阿里​搜索离线平台如何实现?
  2. 怎么能学好Java开发,学好Java一般需要多少钱
  3. Galgame研发日志:独立游戏制作前应当进行的第一步
  4. 【MySQL】查看MySQL配置文件路径及相关配置
  5. ORACLE 11g R2 RAC群集堆栈的关闭过程分析
  6. python基础-2
  7. gzip, gunzip, zcat - 压缩或展开文件
  8. 值更新事件(触发带基础属性到指定字段)
  9. 在线的IDE(compilr)支持图形界面,支持C,C++,JAVA
  10. 谈搜索架构师的不同阶段