PTA—包装机(队列)

2023-11-08 02:20
文章标签 队列 pta 包装机

本文主要是介绍PTA—包装机(队列),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

 

天梯赛训练里的一道L2题,自己一遍写出来了,用的双端队列(好像普通队列就可),但发现队列操作有些生疏了,今天就浅浅地复盘一下吧。

点赞别忘了亲👍👍👍👍

 

正文

 

  • 题目链接

   PTA | 程序设计类实验辅助教学平台

 

  • 题面

一种自动包装机的结构如图 1 所示。首先机器中有 N 条轨道,放置了一些物品。轨道下面有一个筐。当某条轨道的按钮被按下时,活塞向左推动,将轨道尽头的一件物品推落筐中。当 0 号按钮被按下时,机械手将抓取筐顶部的一件物品,放到流水线上。图 2 显示了顺序按下按钮 3、2、3、0、1、2、0 后包装机的状态。

一种特殊情况是,因为筐的容量是有限的,当筐已经满了,但仍然有某条轨道的按钮被按下时,系统应强制启动 0 号键,先从筐里抓出一件物品,再将对应轨道的物品推落。此外,如果轨道已经空了,再按对应的按钮不会发生任何事;同样的,如果筐是空的,按 0 号按钮也不会发生任何事。现给定一系列按钮操作,请你依次列出流水线上的物品。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDkuqbmnKjkuI1lbW8,size_20,color_FFFFFF,t_70,g_se,x_168a2fa534b62ff9efaba86b570ffabc1c.png

 

  • 思路

   模拟即可

          队列模拟筐、轨道 ,数组存储放到传送带上的货物;队尾元素出队即为从筐中取货,队尾入队即为向筐中存货;队尾依次读入初始货物到轨道,队头出队即为货物离开传送带;然后模拟整个过程即可。                         

  • 代码

#include<bits/stdc++.h>
using namespace std;
char s[10000][10000];
char ans[10000];       //传送带
deque<char>p[10000];   //轨道
deque<char> t;         //筐
int  main()
{  int n,m,i,k,a,b,c=0,pp=1,max1,j;cin>>n>>m>>max1;for(i=1;i<=n;i++){ cin>>s[i];for( j=0; j<=strlen(s[i])-1; j++ )p[i].push_back( s[i][j] ); //尾插}while(c!=-1){  cin>>c;if(c==0){  if(t.empty()==0)      //判断筐是否为空{   ans[pp]=t.back();//取队尾元素放入传送带t.pop_back();    //队尾出队pp++;            //传送带元素加一}}else{  if(p[c].empty()==0)         //轨不空{   if( t.size()<max1)   //筐不满{  t.push_back(p[c].front());//轨道队首元素尾插入筐p[c].pop_front();//轨道队首元素出队}else            //筐满{  ans[pp]=t.back();//筐队尾元素放入传送带t.pop_back();//筐队尾元素出队pp++;         //传送带元素加一t.push_back(p[c].front());//轨道队首元素尾插入筐p[c].pop_front();//轨道队首元素出队}}}}for(i=1;i<=pp;i++)cout<<ans[i];
}
  • 思考

1.队列能很好的模拟有进有出的实际问题。

2.要搞清队尾队首对应实际问题的哪一部分。

3.操作前要判断队空。

 

 

 

 

 

 

 

 

这篇关于PTA—包装机(队列)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/367376

相关文章

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结

SpringKafka错误处理(重试机制与死信队列)

《SpringKafka错误处理(重试机制与死信队列)》SpringKafka提供了全面的错误处理机制,通过灵活的重试策略和死信队列处理,下面就来介绍一下,具有一定的参考价值,感兴趣的可以了解一下... 目录引言一、Spring Kafka错误处理基础二、配置重试机制三、死信队列实现四、特定异常的处理策略五

Spring Boot整合消息队列RabbitMQ的实现示例

《SpringBoot整合消息队列RabbitMQ的实现示例》本文主要介绍了SpringBoot整合消息队列RabbitMQ的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录RabbitMQ 简介与安装1. RabbitMQ 简介2. RabbitMQ 安装Spring

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque

解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)

《解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)》该文章介绍了使用Redis的阻塞队列和Stream流的消息队列来优化秒杀系统的方案,通过将秒杀流程拆分为两条流水线,使用Redi... 目录Redis秒杀优化方案(阻塞队列+Stream流的消息队列)什么是消息队列?消费者组的工作方式每

Redis延迟队列的实现示例

《Redis延迟队列的实现示例》Redis延迟队列是一种使用Redis实现的消息队列,本文主要介绍了Redis延迟队列的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录一、什么是 Redis 延迟队列二、实现原理三、Java 代码示例四、注意事项五、使用 Redi

hdu1180(广搜+优先队列)

此题要求最少到达目标点T的最短时间,所以我选择了广度优先搜索,并且要用到优先队列。 另外此题注意点较多,比如说可以在某个点停留,我wa了好多两次,就是因为忽略了这一点,然后参考了大神的思想,然后经过反复修改才AC的 这是我的代码 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<

PTA求一批整数中出现最多的个位数字

作者 徐镜春 单位 浙江大学 给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。 输入格式: 输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。 输出格式: 在一行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n

poj 3190 优先队列+贪心

题意: 有n头牛,分别给他们挤奶的时间。 然后每头牛挤奶的时候都要在一个stall里面,并且每个stall每次只能占用一头牛。 问最少需要多少个stall,并输出每头牛所在的stall。 e.g 样例: INPUT: 51 102 43 65 84 7 OUTPUT: 412324 HINT: Explanation of the s