L2-037 包装机

news2024/11/25 23:52:42

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

图1 自动包装机的结构

图 2 顺序按下按钮 3、2、3、0、1、2、0 后包装机的状态

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

现给定一系列按钮操作,请你依次列出流水线上的物品。

输入格式:

输入第一行给出 3 个正整数 N(≤100)、M(≤1000)和 Smax​(≤100),分别为轨道的条数(于是轨道从 1 到 N 编号)、每条轨道初始放置的物品数量、以及筐的最大容量。随后 N 行,每行给出 M 个英文大写字母,表示每条轨道的初始物品摆放。

最后一行给出一系列数字,顺序对应被按下的按钮编号,直到 −1 标志输入结束,这个数字不要处理。数字间以空格分隔。题目保证至少会取出一件物品放在流水线上。

输出格式:

在一行中顺序输出流水线上的物品,不得有任何空格。

输入样例:

3 4 4
GPLT
PATA
OMSA
3 2 3 0 1 2 0 2 2 0 -1

输出样例:

MATA

//此题就是关于栈(框)和队列(轨道)的应用,队列这里可以用vector数组处理,但鉴于大家对于vector的了解程度,我们更建议使用字符串数组或字符数组,然后这里的栈也可以使用字符数组代替,不过更推荐栈的使用。

//注意题目所说的特殊情况:第一,如果将轨道物品推入框之前,发现框满,要输出框顶元素,然后再推入框中;第二虽然题目说我们框中无物品并且按0或者轨道无物品再按对应轨道号时无影响,但我们仍需判断,否则段错误。

//这里犯了一个低级错误,导致此前代码1号测试点的2分一直拿不到,我此前的代码书写为

这种if-else的判断就存在很大问题。

 //b数组就是当前输入x后对应的轨道所在的位置。

我后面一直在想,为什么要在if(x==0)这个操作之后去else进行操作,如果不加这个else可不可以,答案显而易见是不行的,我们如果只单独判断x==0,这种属于特判,在下面的操作中,仍然会对0进行操作,除非我们这个判断里加上continue,也就是结束x==0的相关操作后又再次进行下一个输入处理。

#include<bits/stdc++.h>
using namespace std;
int main(){
      int n,m,k,x,b[1005];stack<char>s;char a[105][1005];
    cin>>n>>m>>k;
    for(int i=1;i<=n;i++)b[i]=1;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++)
            cin>>a[i][j];
    }
    while(cin>>x&&x!=-1){
        if(x==0){if(!s.empty()){cout<<s.top();s.pop();}}
        else{
        if(b[x]<=m){
            if(s.size()==k){cout<<s.top();s.pop();}
            s.push(a[x][b[x]]);
            b[x]++;
        }
        }
           }
    return 0;
}

 //下面是我最开始只得一分的代码

#include<bits/stdc++.h>
using namespace std;
int main(){
      int n,m,k,x;stack<char>s;char a[105][1005],b;
    cin>>n>>m>>k;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++)
            cin>>a[i][j];
    }
    while(cin>>x){
        if(x==-1)break;
        if(x==0){b=s.top();cout<<b;s.pop();}
        for(int j=1;j<=m;j++)
            {
        if(a[x][j]!='0'){
            if(s.size()==k){b=s.top();cout<<b;s.pop();
                           s.push(a[x][j]);a[x][j]='0';}
            s.push(a[x][j]);a[x][j]='0';
            break;
        }
        }
    }
    return 0;
}

//经过修改和优化后的正确代码

 //这里我的循环就同样取代b数组带来的效益

#include<bits/stdc++.h>
using namespace std;
int main(){
      int n,m,k,x;stack<char>s;char a[105][1005];
    cin>>n>>m>>k;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++)
            cin>>a[i][j];
    }
    while(cin>>x){
        if(x==-1)break;
        if(x==0){ if(!s.empty()){cout<<s.top();s.pop();}}
        else
       { for(int j=1;j<=m;j++)
            {
        if(a[x][j]!='0'){
            if(s.size()==k){cout<<s.top();s.pop();}
            s.push(a[x][j]);a[x][j]='0';
            break;
        }
        }
       }
    }
    return 0;
}

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

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

相关文章

SegPGD

在这项工作中&#xff0c;我们提出了一种有效和高效的分割攻击方法&#xff0c;称为SegPGD。此外&#xff0c;我们还提供了收敛性分析&#xff0c;表明在相同次数的攻击迭代下&#xff0c;所提出的SegPGD可以创建比PGD更有效的对抗示例。此外&#xff0c;我们建议应用我们的Seg…

【STM32笔记】晶振及旁路电容设计避坑(低速外部晶振LSE无法起振的可能原因)

【STM32笔记】晶振及旁路电容设计避坑&#xff08;低功耗低速外部晶振LSE无法起振的可能原因&#xff09; 晶振无法起振 无非就是旁路电容设计的有问题 一般旁路电容选10pF 12pF 20pF等等 都没啥问题 尤其是高速晶振 基本不会出问题 但是对于低速晶振 电容没选对 就很可能不起…

17- 梯度提升回归树GBRT (集成算法) (算法)

梯度提升回归树: 梯度提升回归树是区别于随机森林的另一种集成方法&#xff0c;它的特点在于纠正与加强&#xff0c;通过合并多个决策树来构建一个更为强大的模型。该模型即可以用于分类问题&#xff0c;也可以用于回归问题中。在该模型中&#xff0c;有三个重要参数分别为 n_…

海盗峡湾——NFT 作品集来袭!

陌生人们&#xff0c;通过这个作品集&#xff0c;可以让你沉浸在海盗们的文化和魔法中。这可能是你唯一的机会&#xff0c;用这些资产把你的土地变成海盗王国&#xff0c;所以不要犹豫了&#xff01; 这个由 Alina Siniakova 制作的系列于 2 月 3 日晚上 11 点在 The Sandbox 市…

倒带ChunJun,同心前行|2022年度回顾2023年共建规划

ChunJun是一个开始于2018年的批流一体数据集成框架项目&#xff0c;原名FlinkX。2022年2月22日&#xff0c;在FlinkX进行初版开源的整整四年后&#xff0c;技术团队决定对FlinkX进行整体升级&#xff0c;并更名为ChunJun&#xff0c;希望为大家真正提供一个稳定、高效、易用的批…

服务器常见的网络攻击以及防御方法

网络安全威胁类别 网络内部的威胁&#xff0c;网络的滥用&#xff0c;没有安全意识的员工&#xff0c;黑客&#xff0c;骇客。 木马攻击原理 C/S 架构&#xff0c;服务器端被植入目标主机&#xff0c;服务器端通过反弹连接和客户端连接。从而客户端对其进行控制。 病毒 一…

蓝桥杯C/C++VIP试题每日一练之报时助手

💛作者主页:静Yu 🧡简介:CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家,前端知识交流社区创建者 💛社区地址:前端知识交流社区 🧡博主的个人博客:静Yu的个人博客 🧡博主的个人笔记本:前端面试题 个人笔记本只记录前端领域的面试题目,项目总结,面试技…

Nacos——Nacos简介以及Nacos Server安装

资料来源&#xff1a;02-Nacos配置管理-什么是配置中心_哔哩哔哩_bilibili nacos记得下载2.x版本的&#xff0c;负责以后新建配置的时候会出现“发布错误&#xff0c;请检查参数是否正确”错误&#xff01;&#xff01;&#xff01;&#xff01; 目录 一、Nacos简介 1.1 四…

【CS224W】(task4)图嵌入表示学习

note node2vec&#xff1a; 计算随机游走概率从节点uuu开始模拟rrr条长度为lll的游走链路使用 Stochastic Gradient Descent 优化损失函数 Node2vec在节点分类方面表现更好&#xff1b;而其他方法在链路预测上效果更好&#xff0c;如random walk效率更高&#xff1b;graph emb…

请注意,PDF正在传播恶意软件

据Bleeping Computer消息&#xff0c;安全研究人员发现了一种新型的恶意软件传播活动&#xff0c;攻击者通过使用PDF附件夹带恶意的Word文档&#xff0c;从而使用户感染恶意软件。 类似的恶意软件传播方式在以往可不多见。在大多数人的印象中&#xff0c;电子邮件是夹带加载了恶…

Redis-简单动态字符串

Redis中字符串应该是我们使用最多的一种数据类型了&#xff0c;但是有没有想过Redis是如何存储字符串的呢&#xff1f;Redis并没有用C语言传统的字符串(C语言中的字符串一般末尾采用空字符结尾&#xff0c;\0)&#xff0c;而是采用它们自己实现的一种简单动态字符串(SDS)实现的…

若依ruoyi——手把手教你制作自己的管理系统【二、修改样式】

阿里图标一(&#xffe3;︶&#xffe3;*)) 图片白嫖一((*&#xffe3;3&#xffe3;)╭ ********* 专栏略长 爆肝万字 细节狂魔 请准备好一键三连 ********* 运行成功后&#xff1a; idea后台正常先挂着 我习惯用VScode操作 当然如果有两台机子 一个挂后台一个改前端就更好…

java中volatile与synchronized的区别,volatile为什么不能保证原子性

1.volatile与synchronized的区别 2.volatile为什么不能保证原子性 定义&#xff1a; 即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断&#xff0c;要么就都不执行。 原子性是拒绝多线程操作的&#xff0c;不论是多核还是单核&#xff0c;具有原子性的量…

【C/C++】VS2019下C++生成DLL并且成功调用(金针菇般细)

目录 一&#xff0c;生成动态链接库 二&#xff0c;使用动态链接库 一&#xff0c;生成动态链接库 1.打开VS2019&#xff0c;创建新项目&#xff0c;选择 动态链接库(DLL) 模板后进行下一步 2.输入项目名称&#xff0c;其它默认就行(可自行选择)&#xff0c;点击创建 3 工程…

hive开窗函数

hive开窗函数 窗口函数 数据准备 1 jx 20 2 zx 24 3 yx 18 4 wz 10 5 yy 34 6 wy 25create table t (> id int,> name string,> age int> )> row format delimited fields terminated by ; load data inpath /data/data.txt into table t;ROW_NUMBER ROW_N…

网上订餐项目(含后台管理界面)

项目开发环境 项目使用IDEA 2018.3.5进行开发。Maven版本为 3.6.2。Tomcat版本为 8.5.42。数据库为mysql 5.7。JDK版本为1.8_211。项目使用SpringSpringMVCMybits框架。 点餐前台功能 登陆界面如下 登陆后可添加菜品到餐车 餐车里可查看添加的菜品 提交后可查看已派送和未…

Zookeeper配置化中心

zookeeper的基本知识 zookeeper的数据结构:zookeeper提供的命名空间非常类似于标准的文件系统&#xff0c;key-value的形式存储&#xff0c;名称key由/分割的一系列路径元素&#xff0c;zookeeper名称空间中的每个节点都是一个路径标志。 windows下的zookeeper安装&#…

使用Docker快速部署ES单机

所有的操作都是基于Docker来的&#xff0c;没有装Docker的话请参照官方文档安装单机环境部署初始化相关目录mkdir -p /usr/local/elasticsearch/{config,plugins,data}准备配置文件vim /usr/local/elasticsearch/config/elasticsearch.yml将下面的内容粘贴到elasticsearch.yml#…

训练一个中文gpt2模型

前言 这是我的github上的一个介绍&#xff0c;关于如何训练中文版本的gpt2的。链接为: https://github.com/yuanzhoulvpi2017/zero_nlp 介绍 本文&#xff0c;将介绍如何使用中文语料&#xff0c;训练一个gpt2可以使用你自己的数据训练&#xff0c;用来&#xff1a;写新闻、…

linux中top命令分析

TOP命令是 比较常用的性能分析命令&#xff0c;可以看出服务器CPU 、负载、内存、磁盘、IO等数值&#xff0c;接下来就详细解读top命令 top命令 打开服务器终端&#xff0c;直接输入top&#xff0c;top命令中的数据显示的都是当前的实时数据 直接这样输入&#xff0c;回车即…