队列:动物收养所

问题

题目描述

有家动物收容所只收留猫和狗,但有特殊的收养规则。收养人有两种收养方式:第一种为直接收养所有动物中最早进入收容所的。第二种为选择收养的动物类型(猫或狗),并收养该种动物中最早进入收容所的。给定一个操作序列代表所有事件。
若第一个元素为 1,则代表有动物进入收容所。第二个元素为动物的编号,正数代表狗,负数代表猫。
若第一个元素为 2,则代表有人收养动物。第二个元素若为 0,则采取第一种收养方式;若为1,则指定收养狗;若为-1,则指定收养猫。
请按顺序输出收养动物的序列。
若出现不合法的操作,即没有可以符合领养要求的动物,则将这次领养操作忽略。

输入

 第一个是n,它代表操作序列的次数。接下来是n行,每行有两个值m 和t,分别代表题目中操作的两个元素。

输出

 按顺序输出收养动物的序列,编号之间以空格间隔。

样例输入 

6
1 1
1 -1
2 0
1 2
2 -1
2 1 

样例输出 

1  -1  2

分析

        根据题目描述的先进先出方法,首先应该想到采用队列来实现。然而,如果只维护一个队列,那么对于直接收养所有动物中最早进入收容所的第一种收养方式,实现起来就会非常简单:只需每次取出队列头部的动物。但是,这样做的话,对于选择性地收养动物的第二种方式就会比较复杂,此时需要访问整个队列,以便找出第一个被访问的猫或第一个被访问的狗。

        因此,可以维护两个队列:一个队列用于存放狗,另一个队列用于存放猫。于是,对于选择性地收养动物的第二种方式,实现起来就会非常简单:根据要收养的是猫还是狗,从相应的队列中取出队列头部的动物。然而,对于第一种收养方式,需要判断两个队列头部的猫和狗哪个更先进入收容所,这时需要有一个标志进行判断。因此,每次在把动物放入它们对应的队列时,都要给它加一个次序标志。于是,只需比较两个队列头部动物的次序标志,就可实现第一种收养方式。

代码 

Java代码

import java.util.*;class Animal{int number;int order;public Animal(int number,int order){this.number = number;this.order = order;}
}public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();int order = 1;Queue<Animal> dogs = new LinkedList<>();Queue<Animal> cats = new LinkedList<>();for(int i = 0;i < num;i++){int method,choice;method = scanner.nextInt();choice = scanner.nextInt();if(method == 1){if(choice > 0){dogs.offer(new Animal(choice,order++));}else {cats.offer(new Animal(choice,order++));}}else {if(choice == 0){if(!dogs.isEmpty() && !cats.isEmpty()){if(dogs.peek().order < cats.peek().order){System.out.println(dogs.poll().number);}else {System.out.println(cats.poll().number);}} else if (!dogs.isEmpty() && cats.isEmpty()) {System.out.println(dogs.poll().number);}else if (dogs.isEmpty() && !cats.isEmpty()){System.out.println(cats.poll().number);}} else if (choice == 1) {System.out.println(dogs.poll().number);} else if (choice == -1) {System.out.println(cats.poll().number);}}}}
}

C+STL代码

#include <iostream>
#include <cstdio>
#include <queue>using namespace std;struct animal{int number;int order;animal(int _number,int _order):number(_number),order(_order){}    //构造方法
};int main(){queue<animal> dog;queue<animal> cat;int num;scanf("%d", &num);int order = 0;for (int i = 0; i < num; i++) {int operation;int choice;scanf("%d %d", &operation, &choice);if(operation == 1){if(choice > 0){dog.push(animal(choice,order++));}else{cat.push(animal(choice,order++));}}else if (operation == 2){if(choice == 0){if(!dog.empty() && !cat.empty()){if(dog.front().order < cat.front().order){printf("%d",dog.front().number);dog.pop();}else{printf("%d",cat.front().number);cat.pop();}}else if (!dog.empty() && cat.empty()){printf("%d",dog.front().number);dog.pop();}else if (dog.empty() && !cat.empty()){printf("%d",cat.front().number);cat.pop();}}else if (choice == 1){printf("%d",dog.front().number);dog.pop();}else if (choice == -1){printf("%d",cat.front().number);cat.pop();}}}return 0;
}

 

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

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

相关文章

实验室一块GPU都没有?这个云平台直接送4090免费无门槛代金券!

你有没有一些年代久远的老照片&#xff0c;或是网络下载的图片和视频&#xff0c;低分辨率、模糊还有噪点&#xff0c;如果能一键修复成高清就好了&#xff01;现在在AI算法工程师圈子里很火的GpuMall智算云&#xff0c;上面的镜像可以一键帮你修复照片&#xff01;比如我们用R…

【碳化硅】陷阱(traps)对SiC MOSFET阈值电压漂移的影响

这篇文章是关于硅碳化物(SiC)金属氧化物半导体场效应晶体管(MOSFET)的阈值电压漂移问题的研究。文章的主要目的是通过研究不同的陷阱(traps)对阈值电压漂移的影响,来解决SiC MOSFET的可靠性问题。 摘要(Abstract) 文章提出了一种研究方法,用于分析影响SiC MOSFET阈值…

LabVIEW学习记录4-局部变量、全局变量、共享变量

【LabVIEW】局部变量、全局变量、共享变量 一、变量定义二、内存分配三、竞争状态四、变量创建及简单使用示例4.1 局部变量4.1.1 局部变量的创建4.1.2 局部变量的编程实例 4.2 全局变量4.2.1 创建4.2.2 调用4.2.3 编程实例 4.3 共享变量 一、变量定义 LabVIEW&#xff08;Labor…

【Web后端】servlet基本概念

1.ServletAPI架构 HttpServlet继承GenericServletGenericServlet实现了Servlet接口&#xff0c;ServletConfig接口,Serializable接口自定义Servlet继承HttpServlet 2.Servlet生命周期 第一步&#xff1a;容器加载Servlet第二步&#xff1a;调用Servlet的无参构造方法&#xf…

【生信技能树】数据挖掘全流程

R包的安装&#xff0c;每次做分析的时候先运行这段代码把R包都安装好了&#xff0c;这段代码不需要任何改动&#xff0c;每次分析直接运行。 options("repos""https://mirrors.ustc.edu.cn/CRAN/") if(!require("BiocManager")) install.packag…

Spring Data JPA + Hibernate + Mysql

Hibernate是一个开源的对象关系映射(ORM)框架&#xff0c;国外使用比较多&#xff0c;国内主要使用的mybatis。 JPA&#xff0c;Spring Data JPA和Hibernate JPA只是一个ORM框架的规范, 对该规范的实现比较完整就是Spring Data JPA&#xff08;底层基于Hibernate实现&#xff…

TFS(淘宝分布式存储引擎

TFS&#xff08;淘宝分布式存储引擎&#xff09; 什么是TFS&#xff1f; ​ 根据淘宝2016年的数据分析&#xff0c;淘宝卖家已经达到900多万&#xff0c;有上十亿的商品。每一个商品有包括大量的图片和文字(平均&#xff1a;15k)&#xff0c;粗略估计下&#xff0c;数据所占的…

IaC实战指南:DevOps的自动化基石

基础设施即代码&#xff08;Infrastructure as Code&#xff0c;IaC&#xff09;是指利用脚本、配置或编程语言创建和维护基础设施的一组实践和流程。通过IaC&#xff0c;我们可以轻松测试各个组件、实现所需的功能并在最小化停机时间的前提下进行扩展。更值得一提的是&#xf…

ETLCloud中如何执行Java Bean脚本

ETLCloud中如何执行Java Bean脚本 在ETLCloud这一强大的数据集成和转换平台中&#xff0c;执行Java Bean脚本的能力为其增添了更多的灵活性和扩展性。Java Bean脚本不仅仅是一段简单的代码&#xff0c;而是一种强大的工具&#xff0c;可以帮助用户定制和优化数据处理的每一个环…

按键配合LDO实现开关功能

今天给大家分享一个学到的按键开关电路&#xff0c;适合没有足够空间给自锁开关的场景&#xff0c;既可以用于USB供电控制也可以用于电池供电控制。话不多说上电路图先。 核心任务就是通过按键控制LDO芯片的使能管脚的电平状态&#xff0c;这枚NCP芯片高电平使能&#xff0c;VB…

数学建模速成

建模手&#xff1a; 清风 【【强烈推荐】清风&#xff1a;数学建模算法、编程和写作培训的视频课程以及Matlab等软件教学】https://www.bilibili.com/video/BV1DW411s7wi?vd_sourcedb98a5294f4e914ff8d9b0cad1ee6bda 【【数学建模模型算法速成&#xff08;Matlab/Python双语…

Python图形界面(GUI)Tkinter笔记(三):控件的定位(1)

Tkinter(GUI)设计图形界面时有三种控件的包装方法去定位各控件在窗口(父容器、根窗口)上的位置。 【1】pack()方法:用方位来定位位置,类似于Word文档中的文字对齐方式。 【2】grid()方法:用二维表格式的坐标值定位,类似于EXCEL单位元。 【3】place()方法:用窗口的像…

代码随想录算法训练营第四十五天|70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数

70. 爬楼梯 &#xff08;进阶&#xff09; 思路&#xff1a; 我们之前做的 爬楼梯 是只能至多爬两个台阶。 这次改为&#xff1a;一步一个台阶&#xff0c;两个台阶&#xff0c;三个台阶&#xff0c;.......&#xff0c;直到 m个台阶。问有多少种不同的方法可以爬到楼顶呢&a…

Q1季度空气净化器行业线上市场(京东天猫淘宝)销售数据分析

随着人们对健康生活方式的追求&#xff0c;以及消费升级的推动&#xff0c;空气净化器市场正在逐步恢复增长态势。 根据鲸参谋数据显示&#xff0c;今年Q1季度空气净化器在线上市场&#xff08;京东天猫淘宝&#xff09;综合销量超90万件&#xff0c;同比去年增长4%&#xff1…

【Java orm 框架比较】十一 新增 原生jdbc对比

迁移到&#xff08;https://gitee.com/wujiawei1207537021/spring-orm-integration-compare&#xff09; orm框架使用性能比较 比较mybatis-plus、lazy、sqltoy、mybatis-flex、easy-query、mybatis-mp、jpa、dbvisitor、beetlsql、dream_orm、wood、hammer_sql_db、原生jdbc…

应用访问多个DB的方法

应用开发一般情况只会使用一个DB视图(多DB集群同步复制的可以视为一个DB&#xff0c;它们之间的数据同步策略可以由DBA来配置&#xff0c;跟开发人员无关)&#xff0c;如果需要访问其他应用的DB&#xff0c;不建议直接连到DB操作&#xff0c;而是通过封装好的web服务接口来访问…

1055: 邻接矩阵到邻接表

解法&#xff1a; #include<iostream> using namespace std; int arr[100][100]; int main() {int n;cin >> n;for (int i 0; i < n; i) {for (int j 0; j < n; j) {cin >> arr[i][j];}}for (int i 0; i < n; i) {for (int j 0; j < n; j) …

中东电商Noon测评Hepsiburada贺百狮,Souq,Temu,Nice One,MEIG如何自己养号补单?

养买家号进行中东跨境电商测评&#xff0c;是一个需要细心和技术的过程&#xff0c;特别是在不同的电商平台上Noon&#xff08;Namshi&#xff09;、Hepsiburada&#xff08;贺百狮&#xff09;、Souq&#xff08;亚马逊&#xff09;、Nice One、MEIG、Wadi、Temu。需要搭建完整…

洁净环境微生物监测的解决方案

药品污染控制 Manufacturing 无菌药品生产污染控制意义 01 CCS策略 无菌药品生产污染控制策略&#xff08;CCS) &#xff1a;来自于现行产品和工艺理解&#xff0c;为确保工艺性能和产品质量&#xff0c;所计划的一套体系&#xff0c;针对微生物、热原/内毒素和微粒的控制方…

impdp恢复表后发现比原表多了100多行

因客户删除数据&#xff0c;恢复表时发现恢复表后发现比原表多了100多行&#xff0c;啥原因暂不清楚&#xff0c;继续学习 [oraclehydb ~]$ more expdp_orcl_20240406_2100.log |grep "USR_HY"."T_COPIES". . exported "USR_HY"."T_COPIES…