(三十三)队列(queue)

文章目录

  • 1. 队列(queue)
    • 1.1 定义
    • 1.2 函数
    • 1.3 习题
      • 1.3.1 例题(周末舞会)
  • 2. 双向队列(deque)
    • 2.1 定义
    • 2.2 函数
    • 2.3 题目
      • 2.3.1 例题(打BOSS)

1. 队列(queue)

队列也是一种特殊的数据类型,它遵守了先进先出(FIFO, First In First Out)原则

1.1 定义

形象点儿说,队列相当于学校的排队的食堂,先来排队的先得到饭,然后先走;后来排队的最后得到饭,最后走。

STL 专门提供了关于栈和队列的容器,还拓展了一个双向队列(deque)

导入栈(stack):#include <stack>
导入队列(queue):#include <queue>
导入双向队列(deque):#include <deque>
三个库均可使用 #include <bits/stdc++.h> 导入

1.2 函数

想要构造一个队列,可以使用queue<类型> 队列名称 这种方式构造,一般定义的名称:QTqQueue

  1. 名称.push(x):让x入队,也就是x排到队列后方
  2. 名称.pop():让队头出队,后面的代替队头
  3. 名称.front():返回队头数据
  4. 名称.size():返回队列长度
  5. 名称.empty():队列是否为空,空返回1,否则返回0
  6. 名称.clear():清空

遍历队列一般都是程序末尾的事

#include <iostream>
#include <queue>
using namespace std; int main () {queue<int> T; ...while(T.size()) {cout << T.front() << ' '; T.pop(); }return 0; 
}

1.3 习题

它和栈还有一种特殊的出法:DFS 与 BFS
这个后面会有关于它的文章

1.3.1 例题(周末舞会)

题目链接
题目描述
假设在周末舞会上, x x x 个男士和 y y y 个女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。规定每个舞曲能有一对跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。舞曲总共播放 n n n 次。现要求写一个程序,模拟上述舞伴配对问题。

输入
第一行输入两个数 x x x y y y,表示两队的人数;
第二行输入一个数 n n n,表示舞曲的数目。

输出
输出 n n n 排,每排两个数,表示男士编号和女士编号

样例输入

4 6
7

样例输出

1 1
2 2
3 3
4 4
1 5
2 6
3 1

题解
仔细观察输出,你会发现规律:左边以 1 , 2 , . . . , x , 1 , 2 , . . . , x , . . . 1, 2, ..., x, 1, 2, ..., x, ... 1,2,...,x,1,2,...,x,... 的顺序输出,右边以 1 , 2 , y , . . . , 1 , 2 , . . . , y , . . . 1, 2, y, ..., 1, 2, ..., y, ... 1,2,y,...,1,2,...,y,... 的顺序输出

#include <iostream>
#include <queue>
using namespace std; 
int main() {int x, y, n; cin >> x >> y >> n; queue<int> M, F; //M:男士    F:女士for(int i=1; i<=x; i++) //初始化男士编号M.push(i); for(int i=1; i<=y; i++) //初始化女士编号F.push(i); for(int i=1; i<=n; i++) {M.push(M.front()); //跳完后男士排在队伍后面F.push(F.front()); //跳完后女士排在队伍后面cout << M.front() << ' ' << F.front() << endl; //输出M.pop(); F.pop(); }return 0; //结束程序
}

2. 双向队列(deque)

2.1 定义

这是 STL 独有的专属容器,它也有队头和队尾,但插入和删除可以同时进行。形象一点就是医院的“军人优先”。还是一个队列,普通人往后排,军人们有可以排在前面的特权。因此,队头可以插入删除,队尾也可以。

2.2 函数

使用deque<类型> 名称构造一个双向队列,一般名称TDeque

  1. 名称.push_front(x):向队头插入元素x
  2. 名称.push_back(x):向队尾插入元素x
  3. 名称.pop_front():队头出队
  4. 名称.pop_back():队尾出队
  5. 名称.front():返回队头元素
  6. 名称.back():返回队尾元素
  7. 名称.size():返回队列大小
  8. 名称.empty():队列是否为空,是返回1,否则返回0
  9. 名称.clear():清空

2.3 题目

双向队列只是stackqueue的整合,所以关于它的题目很少

2.3.1 例题(打BOSS)

这个复制不了,请点开 题目链接 查看

题解

#include <bits/stdc++.h>
using namespace std; int main () {int m, s, hp; cin >> m >> s >> hp; deque<int> T; for(int i=1; i<=m; i++) {string o; cin >> o; if(o=="add") {int n; cin >> n; if(T.size()<s) {T.push_back(n); }} else {if(!T.empty()) {if(T.front()>=T.back()) {hp -= T.front(); T.pop_front(); } else {hp -= T.back(); T.pop_back(); }if(hp<=0) {cout << i; return 0; }}}}cout << "-1"; return 0; 
}

预览

  • 二十六:vector容器
  • 二十七:递推
  • 二十八:set容器
  • 二十九:map容器
  • 三十:二分查找
  • 三十一:前缀和与差分
  • 三十二:栈(stack)
  • 三十三:队列(queue)
  • 三十四:神奇的计算机
  • 三十五:链表
  • 三十六:树与遍历
  • 三十七:图与DFS、BFS
  • 三十八:array容器
  • 三十九:priority_queue容器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/60718.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见室内定位技术详解及其发展

‌常见的室内定位技术主要包括红外线定位、超声波定位、射频识别&#xff08;RFID&#xff09;定位、超宽带&#xff08;UWB&#xff09;定位、WiFi定位、蓝牙定位等‌。以下是这些技术的详解及其发展概述&#xff1a; ‌红外线定位技术‌ ‌原理‌&#xff1a;利用红外线IR标识…

《FreeRTOS任务基础知识以及任务创建相关函数》

目录 1.FreeRTOS多任务系统与传统单片机单任务系统的区别 2.FreeRTOS中的任务&#xff08;Task&#xff09;介绍 2.1 任务特性 2.2 FreeRTOS中的任务状态 2.3 FreeRTOS中的任务优先级 2.4 在任务函数中退出 2.5 任务控制块和任务堆栈 2.5.1 任务控制块 2.5.2 任务堆栈…

springboot的社区团购系统设计录像

springboot的社区团购系统设计录像 springboot的社区团购系统设计

枚举Enum使用

枚举使用 数据库存储字段为code 前端返回为msg 修改时需要传入code 枚举代码 import com.baomidou.mybatisplus.annotation.EnumValue; import com.fasterxml.jackson.annotation.JsonValue; import com.ruoyi.common.exception.ServiceException; import lombok.AllArgsCon…

初学人工智不理解的名词3

TTS领域的名词 from gpt-4o 在 TTS&#xff08;文本到语音合成&#xff09; 领域&#xff0c;以下是 CFM、One-Step 蒸馏 和 ReFlow 的含义和作用的详细解释&#xff1a; 1. CFM&#xff08;Consistent Flow Matching&#xff09; Consistent Flow Matching&#xff08;一致流…

力扣每日一题

行变成回文&#xff1a; 对于每一行&#xff0c;遍历前半部分的元素&#xff0c;与后半部分的元素比较。如果不相等&#xff0c;计数器加 1&#xff0c;表示需要翻转一次。 列变成回文&#xff1a; 将矩阵转置&#xff0c;使用与行类似的方式对每一列进行统计。可以使用 Python…

linux c 语言回调函数学习

动机 最近在看 IO多路复用&#xff0c;包括 select() poll () epoll() 的原理以及libevent&#xff0c; 对里面提及的回调机制 比较头大&#xff0c;特写此文用例记录学习笔记。 什么是回调函数 网上看到的最多的一句话便是&#xff1a;回调函数 就是 函数指针的一种用法&am…

Ceph PG(归置组)的状态说明

Ceph PG&#xff08;Placement Group&#xff09;的状态反映了Ceph集群中数据的健康状况和分布情况。以下是Ceph PG的一些常见状态&#xff1a; Creating&#xff1a;创建状态。在创建存储池时&#xff0c;会创建指定数量的归置组&#xff08;PG&#xff09;。Ceph在创建一或多…

ElegantRL:高效、稳定的深度强化学习开源框架

ElegantRL是一个专为大规模并行深度强化学习&#xff08;DRL&#xff09;设计的开源框架&#xff0c;由Yonv1943&#xff08;或AI4Finance-Foundation&#xff09;开发。以下是关于ElegantRL的详细介绍&#xff1a; 一、项目背景与特点 项目名称&#xff1a;ElegantRL&#xf…

游戏引擎学习第九天

视频参考:https://www.bilibili.com/video/BV1ouUPYAErK/ 修改之前的方波数据&#xff0c;改播放正弦波 下面主要讲关于浮点数 1. char&#xff08;字符类型&#xff09; 大小&#xff1a;1 字节&#xff08;8 位&#xff09;表示方式&#xff1a;char 存储的是一个字符的 A…

SRIO RapidIO 笔记

RapidIO 基础与底层包类型 1.RapidIO 是基于数据包交换的互联体系结构 类似 Mac 层使用以太网的计算机网络&#xff08;IEEE802.3&#xff09;&#xff1f; 首先 RapidIO 是一个互联协议&#xff08;类似计算机网络 IEEE802.3&#xff09;&#xff0c;包含硬件与软件的定义&…

python makedirs() 详解

在 Python 中&#xff0c;os.makedirs() 函数用于递归地创建目录。也就是说&#xff0c;它不仅会创建指定的目录&#xff0c;还会创建任何必要的父目录。这个函数在处理需要创建多级目录结构时非常有用。 1、语法 os.makedirs(name, mode0o777, exist_okFalse) 1.1、参数 n…

# Python IDE的介绍和选择 --- 《跟着小王学Python》

Python IDE的介绍和选择 — 《跟着小王学Python》 《跟着小王学Python》 是一套精心设计的Python学习教程&#xff0c;适合各个层次的学习者。本教程从基础语法入手&#xff0c;逐步深入到高级应用&#xff0c;以实例驱动的方式&#xff0c;帮助学习者逐步掌握Python的核心概念…

摄影:机位

机位 初步拆分机位高度平视机位优势特写、近景分不清。劣势 高机位低机位 初步拆分机位 我们可以将机位分为&#xff1a;高度、角度、距离三个方面。 高度-平视机位、高机位、低机位。 角度-正面、侧面、背面。 距离-取景范围-远、全、中、近、特 高度 平视机位 相机与相机…

Modern Effective C++:item 1 理解模板类型推导

通用引用&#xff08;万能引用&#xff09; 通用引用通常表示为 T&&&#xff0c;其中 T 是一个模板参数类型&#xff08;模板中的&&表示通用引用&#xff09;。&& 虽然通常表示一个右值引用&#xff0c;但当T由模板参数推导而来时&#xff0c;其既可以…

机器学习——期末复习 重点题归纳

第一题 问题描述 现有如下数据样本&#xff1a; 编号色泽敲声甜度好瓜1乌黑浊响高是2浅白沉闷低否3青绿清脆中是4浅白浊响低否 &#xff08;1&#xff09;根据上表&#xff0c;给出属于对应假设空间的3个不同假设。若某种算法的归纳偏好为“适应情形尽可能少”&#xff0c;…

柯桥生活英语口语学习“面坨了”英语怎么表达?

“面坨了”英语怎么表达&#xff1f; 要想搞清楚这个表达&#xff0c;首先&#xff0c;我们要搞明白“坨”是啥意思&#xff1f; 所谓“坨”就是指&#xff0c;面条在汤里泡太久&#xff0c;从而变涨&#xff0c;黏糊凝固在一起的状态。 有一个词汇&#xff0c;很适合用来表达这…

ZeroSSL HTTPS SSL证书ACMESSL申请3个月证书

目录 一、引言 二、准备工作 三、申请 SSL 证书 四、证书选型 五、ssl重要性 一、引言 目前免费 Lets Encrypt、ZeroSSL、BuyPass、Google Public CA SSL 证书&#xff0c;一般免费3-6个月。从申请难易程度分析&#xff0c;zerossl申请相对快速和简单&#xff0c;亲测速度非…

Java连接MySQL(测试build path功能)

Java连接MySQL&#xff08;测试build path功能&#xff09; 实验说明下载MySQL的驱动jar包连接测试的Java代码 实验说明 要测试该情况&#xff0c;需要先安装好MySQL的环境&#xff0c;其实也可以通过测试最后提示的输出来判断build path是否成功&#xff0c;因为如果不成功会直…

第四节-OSI-网络层

数据链路层&#xff1a;二层--MAC地址精确定位 Ethernet 2&#xff1a; 报头长度&#xff1a;18B 携带的参数&#xff1a;D MAC /S MAC/TYPE(标识上层协议)/FCS 802.3 报头长度&#xff1a;26B 携带的参数&#xff1a;D MAC/S MAC/LLC(标识上层协议)/SNAP&#xff08;标识…