关于栈、队列、优先队列的应用——UVa11995
这本来是上一篇博客里的内容,但不知道什么原因breakdown了……我就简单放上一道题好了
题意:这道题的题目是“猜猜数据结构”,题意就是给你一些输入输出数据,让你根据这些数据判断是什么数据结构。要猜的数据结构只有三种,栈(stack)、队列(queue)、优先队列(priority_queue)。输出有5种情况,前三种分别是确定了一种数据结构,第四种是三种数据结构都不符合,第五种是有2种或2种以上符合。
#include <bits/stdc++.h>
using namespace std;
int n;
int main()
{
int a,b;
while (scanf("%d",&n)!=EOF)
{
stack<int>s;
queue<int>q;
priority_queue<int,vector<int>,less<int> >p;
int f[];
for(int i=;i<;i++) f[i]=;
for(int i=;i<=n;i++)
{
scanf("%d %d",&a,&b);
if(a==) ///分别进入三种数据结构
{
s.push(b);
q.push(b);
p.push(b);
}
else
{
if(!s.empty())
{
if(s.top()!=b)///进栈
{
f[]=;
}
s.pop();
}
else
f[]=;
if(!q.empty())///进队
{
if(q.front()!=b)
{
f[]=;
}
q.pop();
}
else
f[]=; if(!p.empty()) ///进优先队列
{
if(p.top()!=b)
{
f[]=;
}
p.pop(); }
else
f[]=; } }
int cnt=;
for(int j=;j<;j++)
{
if(f[j]==)
cnt+=;
}
if(cnt==)
cout<<"impossible\n";
else if(cnt>)
cout<<"not sure\n";
else
{
if(f[])
cout<<"stack\n";
if(f[])
cout<<"queue\n";
if(f[])
cout<<"priority queue\n";
} }
}
关于栈、队列、优先队列的应用——UVa11995的更多相关文章
- Java栈,队列,优先队列的使用
1. 栈的使用: import java.util.*; public class Main{ public static void main(String[] args){ Deque<Str ...
- 【STL】栈+队列+优先队列(详)+ 拯救行动题解
一.栈 栈(stack)又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它是把新元 ...
- java 集合 Connection 栈 队列 及一些常用
集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实 ...
- Java 容器之 Connection栈队列及一些常用
集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实 ...
- java面向对象的栈 队列 优先级队列的比较
栈 队列 有序队列数据结构的生命周期比那些数据库类型的结构(比如链表,树)要短得多.在程序操作执行期间他们才被创建,通常用他们去执行某项特殊的任务:当完成任务之后,他们就会被销毁.这三个数据结构还有一 ...
- 队列&优先队列
1.队列 普通的队列都是先进先出,元素从队尾添加,从队头删除. function queue(){ var arr=[]; this.enqueue=function(item){ arr.push( ...
- C++实现一个简单的双栈队列
双栈队列的原理是用两个栈结构模拟一个队列, 一个栈A模拟队尾, 入队的元素全部压入此栈, 另一个栈B模拟队首, 出队时将栈A的元素弹入栈B, 将栈B的栈顶元素弹出 此结构类似汉诺塔, 非常经典, 这里 ...
- 栈&队列&并查集&哈希表(julyedu网课整理)
date: 2018-11-25 08:31:30 updated: 2018-11-25 08:31:30 栈&队列&并查集&哈希表(julyedu网课整理) 栈和队列 1. ...
- Leetcode栈&队列
Leetcode栈&队列 232.用栈实现队列 题干: 思路: 栈是FILO,队列是FIFO,所以如果要用栈实现队列,目的就是要栈实现一个FIFO的特性. 具体实现方法可以理解为,准备两个栈, ...
随机推荐
- vimrc配置
"=========================================================================" DesCRiption 适合 ...
- the shortest path algorithm
Dijkstra算法 又称迪杰斯特拉算法,是一个经典的最短路径算法,主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止,使用了广度优先搜索解决赋权有向图的单源最短路径问题,算法最终得到一个最短路 ...
- [转] CMake
转载地址:https://www.cnblogs.com/lidabo/p/7359422.html cmake 简介 CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装( ...
- 2018-计算机系机试-A
#include<stdio.h> #include<cstdio> #include<cmath> #include<cstring> #includ ...
- Window10下RabbitMQ安装图文教程
版权声明:本文为博主原创文章,未经博主允许欢迎转载,请注明原文链接.一起交流,共同进步. https://blog.csdn.net/newbie_907486852/article/details/ ...
- hadoop day 6
1.为hive配置mysql数据库 conf/hive-site.xml <property> <name>javax.jdo.option.ConnectionURL< ...
- sync.Pool的使用
一定要搞明白sync.Pool的正确用法,避免出现以下问题: kline := this.pool.Get() defer this.pool.Put(kline) kline.UnMarshal(d ...
- webpack基本配置
module: { rules: [ { test: /\.css$/, use: ['style-loader','css-loader?minimize'] } ] } 一.入门 loader可以 ...
- jmeter 上传附件脚本报Non HTTP response code: java.io.FileNotFoundException
如果上传附件报如下错误,就需要把附件放到和脚本同一路径下就解决了
- mysql数据库 事务和索引
1.MySQL数据库特性: 原子性(atomidity) 一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一 ...