例3.1 猜猜数据结构 UVa11995
1.标题叙述性说明:点击打开链接
2.解题思路:据来推測一种可能的数据结构,备选答案有“栈,队列。优先队列”。结果也可能都不是或者不确定。
STL中已经有这三种数据结构了,因此直接模拟题意,输出时推断是否相应就可以。注意:弹出时要推断一下是否已经为空。
3.代码:
- #define _CRT_SECURE_NO_WARNINGS
- #include<iostream>
- #include<algorithm>
- #include<string>
- #include<sstream>
- #include<set>
- #include<vector>
- #include<stack>
- #include<map>
- #include<queue>
- #include<deque>
- #include<cstdlib>
- #include<cstdio>
- #include<cstring>
- #include<cmath>
- #include<ctime>
- #include<functional>
- using namespace std;
- stack<int>s;
- queue<int>q;
- priority_queue<int>p;
- char st[][20] = { "impossible", "priority queue", "queue","not sure" , "stack", "not sure","not sure" ,"not sure" };
- void clear()
- {
- while (!s.empty())s.pop();
- while (!q.empty())q.pop();
- while (!p.empty())p.pop();
- }
- void add(int x)
- {
- s.push(x);
- q.push(x);
- p.push(x);
- }
- void pop()
- {
- if (!s.empty())s.pop();
- if (!q.empty())q.pop();
- if (!p.empty())p.pop();
- }
- int main()
- {
- //freopen("t.txt", "r", stdin);
- int n;
- while (~scanf("%d", &n))
- {
- clear();
- int ok1, ok2, ok3;
- ok1 = ok2 = ok3 = 1;
- for (int i = 0; i < n; i++)
- {
- int a, b;
- cin >> a >> b;
- if (a == 1)add(b);//统一加入
- else
- {
- if (s.empty() || s.top() != b)
- ok1 = 0;
- if (q.empty() || q.front() != b)
- ok2 = 0;
- if (p.empty() || p.top() != b)
- ok3 = 0;
- pop();//统一弹出
- }
- }
- int x = (ok1 << 2) | (ok2 << 1) | ok3;//编码,方便输出结果
- printf("%s\n", st[x]);
- }
- return 0;
- }
版权声明:本文博客原创文章。博客,未经同意,不得转载。
例3.1 猜猜数据结构 UVa11995的更多相关文章
- 【暑假】[实用数据结构]UVa11995 I Can Guess the Data Structure!
UVa11995 I Can Guess the Data Structure! 思路:边读边模拟,注意empty的判断! 代码如下: #include<iostream> #inclu ...
- UVa 11995:I Can Guess the Data Structure!(数据结构练习)
I Can Guess the Data Structure! There is a bag-like data structure, supporting two operations: 1 x T ...
- 关于栈、队列、优先队列的应用——UVa11995
这本来是上一篇博客里的内容,但不知道什么原因breakdown了……我就简单放上一道题好了 题意:这道题的题目是“猜猜数据结构”,题意就是给你一些输入输出数据,让你根据这些数据判断是什么数据结构.要猜 ...
- 最短路径算法之Dijkstra算法(java实现)
前言 Dijkstra算法是最短路径算法中为人熟知的一种,是单起点全路径算法.该算法被称为是“贪心算法”的成功典范.本文接下来将尝试以最通俗的语言来介绍这个伟大的算法,并赋予java实现代码. 一.知 ...
- 如何编写一个JSON解析器
编写一个JSON解析器实际上就是一个函数,它的输入是一个表示JSON的字符串,输出是结构化的对应到语言本身的数据结构. 和XML相比,JSON本身结构非常简单,并且仅有几种数据类型,以Java为例,对 ...
- tomcat内存溢出问题记录
问题说明:公司内网环境中部署的jenkins代码发版平台突然不能访问了,查看tomcat的catalina.out日志发现报错如下: [root@redmine logs]# tail -f /srv ...
- OutOfMemoryError系列(1): Java heap space
每个Java程序都只能使用一定量的内存, 这种限制是由JVM的启动参数决定的.而更复杂的情况在于, Java程序的内存分为两部分: 堆内存(Heap space)和 永久代(Permanent Gen ...
- C++下遍历文件夹
编写程序遍历文件夹及其子文件夹下所有文件,并输出到标准输出流或者文件流. 1. 先考虑在单层目录下,遍历所有文件.以C:\WINDOWS为例: 用到数据结构_finddata_t,文件信息结构体的指针 ...
- 最短路径之迪杰斯特拉算法的Java实现
Dijkstra算法是最短路径算法中为人熟知的一种,是单起点全路径算法.该算法被称为是“贪心算法”的成功典范.本文接下来将尝试以最通俗的语言来介绍这个伟大的算法,并赋予java实现代码. 一.知识准备 ...
随机推荐
- c#基础练习之if结构
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace if语句 ...
- android 巧用资源文件(不断积累)
1.shape的使用 <shape xmlns:android="http://schemas.android.com/apk/res/android" > <s ...
- 当装了两个tomcat后,如何修改tomcat端口
链接地址:http://blog.csdn.net/alongwilliam/article/details/8199974 以前只知道当tomcat端口号冲突了如何修改tomcat默认的8080端口 ...
- cocos2d-x游戏开发系列教程-坦克大战游戏之坦克的显示
1.先定义坦克的一些属性 class Tank : public CCSprite { public : Tank(); ~Tank(); static Tank* createTankWithTan ...
- ARMv8 Linux内核head.S源码分析
ARMv8Linux内核head.S主要工作内容: 1. 从el2特权级退回到el1 2. 确认处理器类型 3. 计算内核镜像的起始物理地址及物理地址与虚拟地址之间的偏移 4. 验证设备树的地址是否有 ...
- 最简单的基于FFMPEG+SDL的视频播放器 ver2 (採用SDL2.0)
===================================================== 最简单的基于FFmpeg的视频播放器系列文章列表: 100行代码实现最简单的基于FFMPEG ...
- 手动加入PE文件数字签名信息及格式具体解释图之下(历史代码,贴出学习)
#include <windows.h> HANDLE hWriteFileHandle = NULL ; HANDLE hReadFileHandle = NULL ; HANDLE h ...
- Restful 和 Jersey介绍(Web Service )
一:REST简单介绍 REST 2000 年由 Roy Fielding 在博士论文中提出,他是 HTTP 规范 1.0 和 1.1 版的首席作者之中的一个. REST 中最重要的概念是资源(reso ...
- 算法-最长子序列和C/C++实现(三个复杂度)
最长子序列和的问题非常easy: 就是一个数组,求出当中当中连续的某一段和,而这一段和是全部的连续段和的最大的值.求出这个值. 先说复杂度最高的:O(n3) 直接上代码,非常easy的: // // ...
- 重新配置与卸载 11gR2 Grid Infrastructure
Oracle 11g R2 Grid Infrastructure 的安装与配置较之前的版本提供了更多的灵活性.在Grid Infrastructure安装完毕前执行root.sh经常容易出现错误,并 ...