队列--专题讲解

news2024/11/26 23:21:12

文章目录

    • 模拟队列
    • queue
        • 头文件
        • 定义
        • 基本操作
    • 循环队列queue
    • 优先队列priority_queue
    • 银行大厅排队
    • 训练挑战

模拟队列

先进先出
队列大概模样
在这里插入图片描述
代码截屏:
在这里插入图片描述

queue

头文件

#include <queue>

定义

//队列 
  queue<int> q;

基本操作

  //向队尾插入一个元素
  q.push();
  
  //返回队头元素
  q.front();
  
  //返回队尾元素
  q.back();
  
  //弹出对头元素
  q.pop();
  
  //元素个数
  q.size();
  
  //清空队列
  q = queue<int>();

循环队列queue

	//push/pop
	//push入队尾,pop入队头 
	for(int i=0;i<10;i++) q.push(i);
	q.pop();
	
	//front/back
	int x=q.front();
	int y=q.back();
	cout<<"front= "<<x<<endl<<"back= "<<y<<endl;

优先队列priority_queue

用法详解点这里

  • top 访问队头元素
  • empty 队列是否为空
  • size 返回队列内元素个数
  • push 插入元素到队尾 (并排序)
  • emplace原地构造一个元素并插入队列
  • pop 弹出队头元素
  • swap 交换内容

定义

//升序序列
	priority_queue<int,vector<int>,greater<int> > qg;
	//降序序列
	priority_queue<int,vector<int>,less<int> > ql;
	

银行大厅排队

描述:

在银行营业大厅共服务3种客户,类型为A\B\C,大厅分别设置了3个窗口分别服务三种客户,即每个窗口只服务一种客户。现有一批客户来银行办理业务,每个客户都有类型和办理业务时间。每个窗口按照客户到来的顺序进行服务。

输入

第一行输入先输入n表示客户数量
第二行输入每个客户的类型,数据之间用用空格隔开
第三行输入每个客户的办理时间,数据之间用用空格隔开

/示例/
8
A B C B C A A A
10 20 30 40 50 60 70 80
1
2
3
4
输出:

第一行输出A类客户的平均办理时间 :
第二行输出B类客户的平均办理时间 :20+40=60/2=30
第三行输出C类客户的平均办理时间

/示例/
55
30
40
解题思路:

为了算出各类客户的平均办理时间,首先要知道的是各类客户花费的总时间。

3种窗口服务三种客户,也就是算出每个窗口的时间。通过将每个窗口抽象成一个队列,将时间作为内容填入队列,即可算出总时间。

除了每个窗口的队列以外,我们还需要将输入的顺序进行存储,因此总共需要4条队列。

#include<iostream>
#include<queue>
using namespace std;

int main() {
	int t;  //次数
	int m;  //待输入的时间
	char ch;  //待输入的客户类型
	queue<int> myQe, myQa[3];  // Qe代表次序,Qa代表窗口
	cin >> t;
    
    // 输入部分
	while (t--) {
		cin >> ch;
		myQe.push(ch-65);  //注意此处push进去的是一个数字,为了查找方便,当ch=A时,把0给push进去,以此类推。A字符转化为数字为65
	}
    
    //输入部分
	while (!myQe.empty()) {
		cin >> m;
		int num = myQe.front();  //根据顺序获取窗口
		myQe.pop();
		myQa[num].push(m);
	}
    
    //输出部分
	for (int i = 0; i < 3; i++) {
		int n = myQa[i].size();  //计算平均数时需要的分母
		int sum = 0;
		while (!myQa[i].empty()) {
			sum += myQa[i].front();
			myQa[i].pop();
		}
		cout << sum / n << endl;
	}
}

训练挑战

#include<iostream>
#include<queue>
using namespace std;

int main() {
	int t;  //次数
	int m;  //待输入的时间
	char ch;  //待输入的客户类型
	queue<int> myQe, myQa[3];  // Qe代表次序,Qa代表窗口
	cin >> t;
    
    // 输入部分
	while (t--) {
		cin >> ch;
		; //注意此处push进去的是一个数字,为了查找方便,当ch=A时,把0给push进去,以此类推。A字符转化为数字为65
	}
    
    //输入部分
	while (!myQe.empty()) {
		cin >> m;
		int num = myQe.front();  //根据顺序获取窗口
		;//myQe弹出
		;//myQa[num]入队列m
	}
    
    //输出部分
	for (int i = 0; i < 3; i++) {
		int n = myQa[i].size();  //计算平均数时需要的分母
		;//定义num,并初始化
		while () {//判断myQa[i]是否为空
			;//sum加上当前myQa[i]的值
			;//myQa[i]弹出
		}
		;//输出 sum 除以 n 答案 
	}
}

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

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

相关文章

24考研数学每日一题(带解析)

题目来源于武老师的每日一题&#xff0c;答案是自己做的&#xff0c;不太严谨&#xff0c;仅供参考 2022年11月1日 知识点&#xff1a;函数定义域 答案&#xff1a; 函数定义域是指自变量x的取值范围&#xff0c;不可以把x1作为自变量&#xff0c;x才是自变量&#xff0c;同…

高级数据结构:树状数组详解(c++实现 求解动态数组区间和问题)

文章目录引入树状数组c完整代码引入 什么是树状数组&#xff1f;&#xff1f;&#xff1f; 解决数据压缩里的累积频率&#xff08;Cumulative Frequency&#xff09;的计算问题&#xff0c;现多用于高效计算数列的前缀和&#xff0c; 区间和&#xff0c;这样的问题可以使用树…

蓝桥杯重点(C/C++)(随时更新,更新时间:2023.1.27)

点关注不迷路&#xff0c;欢迎推荐给更多人 目录 1 技巧 1.1 取消同步&#xff08;节约时间&#xff0c;甚至能多骗点分&#xff0c;最好每个程序都写上&#xff09; 1.2 万能库&#xff08;可能会耽误编译时间&#xff0c;但是省脑子&#xff09; 1.3 蓝桥杯return 0…

深度学习:CSPNet

深度学习&#xff1a;CSPNet前言解决的问题Method目前主流网络存在的问题Partial Dense BlockPartial Transition LayerExact Fusion Model实验前言 CSPNet 是作者 Chien-Yao Wang 于 2019 发表的论文 CSPNET: A NEW BACKBONE THAT CAN ENHANCE LEARNING CAPABILITY OF CNN。也…

【C语言】数据结构-单链表

主页&#xff1a;114514的代码大冒险 qq:2188956112&#xff08;欢迎小伙伴呀hi✿(。◕ᴗ◕。)✿ &#xff09; Gitee&#xff1a;庄嘉豪 (zhuang-jiahaoxxx) - Gitee.com 文章目录 目录 文章目录 前言&#xff08;链表的优势&#xff09; 一、单链表是什么 二、单链表操作…

Hadoop基础之《(2)—Hadoop概述》

一、Hadoop是什么 1、Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 2、主要解决&#xff0c;海量数据的存储和海量数据的分析计算问题。 3、广义上来说&#xff0c;Hadoop通常是指一个更广泛的概念—Hadoop生态圈。 二、Hadoop的三大发行版本 Apache版本&#x…

【论文简述】Long-range Attention Network for Multi-View Stereo(WACV 2021)

一、论文简述 1. 第一作者&#xff1a;Xudong Zhang 2. 发表年份&#xff1a;2021 3. 发表期刊&#xff1a;WACV 4. 关键词&#xff1a;MVS、注意力、级联、监督回归 5. 探索动机&#xff1a;先前的方法忽略了像素之间的依赖关系&#xff0c;并且期望回归的方式效率不高。…

Kettle(10):switch/case组件

1 机智的体育老师——条件判断 有一天,体育老师要让班上的男女同学分别排成两队。但这个班上还有几名同学,很特殊——他们是蜘蛛!!所以,机智的体育老师需要把他们排成三队,男同学一队,女同学一队,蜘蛛一队。 体育老师要做一件非常重要的事情:判断学生是男孩还是女孩、…

联想E14 开机黑屏报错2102:Detection error on HDD0 (Main HDD)

环境&#xff1a; 联想E14 Win10专业版 问题描述&#xff1a; 联想E14 开机黑屏报错2102&#xff1a;Detection error on HDD0 (Main HDD) 解决方案&#xff1a; 1.关机重启 2.尝试拆解&#xff0c;拔出硬盘数据线&#xff0c;重新安装

Scanpy 单细胞基因分析

参考&#xff1a;https://www.bilibili.com/video/BV1sq4y1C7Qx/ https://scanpy-tutorials.readthedocs.io/en/latest/pbmc3k.html 代码下载&#xff1a;scanpy分析scRNA-seq数据基本流程&#xff08;含scanpy seurat两大工具对比&#xff09; 链接: https://pan.baidu.com/s…

华为机试 HJ33 整数与IP地址间的转换

华为机试题 HJ33 整数与IP地址间的转换 一、题目描述 描述原理&#xff1a;ip地址的每段可以看成是一个0-255的整数&#xff0c;把每段拆分成一个二进制形式组合起来&#xff0c;然后把这个二进制数转变成一个长整数。举例&#xff1a;一个ip地址为10.0.3.193每段数字 …

C# - JSON Schema validation

C# - JSON Schema validation引言如何生成 C# 类 JSON Schema利用在线工具利用 Visual Studio利用 NJsonSchema验证 JSON Schema针对 JSON Schema 字符串针对 C# 类 Schema引言 针对 API 测试&#xff0c;我们需要验证 Response 中的一些字段类型&#xff0c;是否缺省等&#…

Linux操作系统精讲之高级IO

代码在&#xff1a; https://github.com/sjmshsh/System-Call-Learn 通过阅读本篇文章&#xff0c;你可以收获&#xff1a; 理解五种IO模型的基本概念&#xff0c;重点是IO多路转接掌握select&#xff0c;poll&#xff0c;epoll系统调用接口并实现简易的TCP服务器理解epoll的…

10、创建不同类型的工程

文章目录10、创建不同类型的模块10.1 创建Java模块10.2 创建Java Web模块1 IDEA中配置Tomcat2 创建Web工程3 配置Web工程并运行4 乱码的解决10.3 创建Maven Java模块1 Maven的介绍2 Maven的配置3 Maven Java工程的创建4 编写代码及测试10.4 创建Maven Web模块1 创建Maven的Web模…

java基础语法——断点调试与数据加密(基础语法练习学习)

目录 Eclipse的断点调试 基础语法的练习 Eclipse的断点调试 作用&#xff1a;查看程序执行流程和调试程序 断点&#xff1a; 就是一个标记,就是我们经常用到的debug&#xff08;检查程序错误&#xff0c;我们用到的是debug as&#xff09; A–哪里加?—— 在实际的程序行号…

Knowledge-based-BERT(二)

多种预训练任务解决NLP处理SMILES的多种弊端&#xff0c;代码&#xff1a;Knowledge-based-BERT&#xff0c;原文&#xff1a;Knowledge-based BERT: a method to extract molecular features like computational chemists&#xff0c;代码解析继续K_BERT_WCL_pretrain。模型框…

Java多线程 - 线程安全和线程同步解决线程安全问题

文章目录线程安全问题线程同步方式一: 同步代码块方式二: 同步方法方式三: Lock锁线程安全问题 线程安全问题指的是: 多个线程同时操作同一个共享资源的时候可能会出现业务安全问题&#xff0c;称为线程安全问题。 举例: 取钱模型演示 需求&#xff1a;小明和小红是一对夫妻&am…

建单向链表-C语言实现

任务描述 本关需要你建立一个带头结点的单向链表。 相关知识 什么是链表?链表和二叉树是C语言数据结构的基础和核心。 链表有多种形式,它可以是单链接的或者双链接的,可以是已排序的或未排序的,可以是循环的或非循环的。 本关让我们来学习单链表。 单链表 单向链表(单…

XC-16 SpringSecurity Oauth2 JWT

SpringSecurityOauth2用户认证需求分析用户认证与授权单点登录需求第三方认证需求用户认证技术方案单点登录技术方案Oauth2认证Oauth2认证流程2.2.2Oauth2在本项目中的应用SpringSecurity Oauth2认证解决方案SpringSecurityOauth2研目标搭建认证服务器导入基础工程创建数据库Oa…

一起自学SLAM算法:9.2 LSD-SLAM算法

连载文章&#xff0c;长期更新&#xff0c;欢迎关注&#xff1a; 下面将从原理分析、源码解读和安装与运行这3个方面展开讲解LSD-SLAM算法。 9.2.1 LSD-SLAM原理分析 前面已经说过&#xff0c;LSD-SLAM算法是直接法的典型代表。因此在下面的分析中&#xff0c;首先介绍一下直…