PTA 7-4 包装机(单调栈)

news2024/7/6 18:49:40

题目

一种自动包装机的结构如图 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)和 S max(≤100),分别为轨道的条数(于是轨道从 1 到 N 编号)、每条轨道初始放置的物品数量、以及筐的最大容量。随后 N 行,每行给出 M 个英文大写字母,表示每条轨道的初始物品摆放。

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

输出格式:

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

  • 输入样例:
3 4 4
GPLT
PATA
OMSA
3 2 3 0 1 2 0 2 2 0 -1
  • 输出样例:
MATA

题解(PTA的在线训练平台很多题java都超时,只能用c++)

#include <iostream>
#include <vector>
#include <string>

using namespace std;

const int N = 105;
const int M = 1005;
const int S = 105;
int n, m, s, bap;
int p[N];
string st[N][M];
string ba[S];
vector<int> list;
vector<string> ans;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    fill(p, p + N, 1);

    cin >> n >> m >> s;

    for (int i = 1; i <= n; i++) {
        string tc;
        cin >> tc;
        for (int j = 1; j <= m; j++) {
            st[i][j] = string(1, tc[j - 1]);
        }
    }

    int temp;
    cin >> temp;
    while (temp != -1) {
        list.push_back(temp);
        cin >> temp;
    }

    for (int i : list) {
        if (i == 0) {
            if (bap != 0) {
                ans.push_back(ba[bap--]);
            } else continue;
        } else {
            if (p[i] == m + 1) continue;
            else {
                if (bap == s) {
                    ans.push_back(ba[bap--]);
                    ba[++bap] = st[i][p[i]];
                    p[i]++;
                } else {
                    ba[++bap] = st[i][p[i]];
                    p[i]++;
                }
            }
        }
    }

    for (string c : ans) {
        cout << c;
    }

    return 0;
}

思路

这道题依然是利用单调栈进行模拟,读好题目细心模拟即可完成。

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

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

相关文章

ssti 常见注入模块利用

文件读取 python脚本&#xff08;这里以重庆橙子科技jinjia2模板注入为例&#xff09; import requests url http://39.104.177.130:18080/flaskBasedTests/jinja2/ for i in range(500):data {"name":"{{().__class__.__base__.__subclasses__()["str…

面试经典 150 题 22 —(数组 / 字符串)— 28. 找出字符串中第一个匹配项的下标

28. 找出字符串中第一个匹配项的下标 方法一 class Solution { public:int strStr(string haystack, string needle) {if(haystack.find(needle) string::npos){return -1;}return haystack.find(needle);} };方法二 class Solution { public:int strStr(string haystack, s…

TensorFlow学习:使用官方模型进行图像分类、使用自己的数据对模型进行微调

前言 上一篇文章 TensorFlow案例学习&#xff1a;对服装图像进行分类 中我们跟随官方文档学习了如何进行预处理数据、构建模型、训练模型等。但是对于像我这样的业余玩家来说训练一个模型是非常困难的。所以为什么我们不站在巨人的肩膀上&#xff0c;使用已经训练好了的成熟模…

《向量数据库指南》——向量数据库 有必要走向专业化吗?

向量数据库 有必要走向专业化吗? 向量数据库系统的诞生,来源于具体业务需求——想要高效处理海量的向量数据,就需要更细分、更专业的数据基础设施,为向量构建专门的数据库处理系统。 但这种路径是必须的吗? 从产品层面讲,如果传统数据库厂商不单独研发向量数据库,那么…

电脑系统升级Win11变卡顿?如何解决!

关于Win11系统更新的相关问题&#xff0c;Win11每一次更新之后会给大家带来更多功能&#xff01;但是每次更新也可能会出现掉驱动、无法打开应用、甚至是蓝屏或者进不去主页等问题&#xff01;所以为了帮助大家预防这些更新出现的后遗症&#xff0c;分享了一些小的方法&#xf…

JavaScript 编写一个 数值转换函数 万以后简化 例如1000000 展示为 100万 万以下原来数值返回

很多时候 我们看一些系统 能够比较只能的展示过大的数值 例如 到万了 他就能展示出 多少 多少万 看着很奇妙 但实现确实非常的基础 我们只需要一个这样的函数 //数值转换函数 convertNumberToString(num) {//如果传入的数值 不是数字 且也无法转为数字 直接扔0回去if (!parse…

学习网络安全得多少费用?网络安全入门了解

前言 网络安全是指对网络系统、硬件、软件和系统数据的保护。不因偶然或者其它原因导致破坏、更改和数据泄露情况。确保网络安全&#xff0c;防止网站被攻击、系统被病毒感染等。随着网络的快速发展&#xff0c;越来越多的用户和公司认识到网络安全的重要性&#xff0c;许多人…

云原生Kubernetes:Rancher管理k8s集群

目录 一、理论 1.Rancher 2.Rancher 安装及配置 二、实验 1.Rancher 安装及配置 三、问题 1. Rancher 部署监控系统报错 四、总结 一、理论 1.Rancher (1) 概念 Rancher 简介 Rancher 是一个开源的企业级多集群 Kubernetes 管理平台&#xff0c;实现了 Kubernetes …

持安科技何艺获中国信通院2022-2023年零信任领域标准卓越贡献者

近日&#xff0c;在中国信息通信研究院和中国通信标准化协会联合主办的“2023 SecGo云和软件安全大会”上&#xff0c;零信任办公安全明星企业持安科技创始人兼CEO何艺获评为2022-2023年度零信任领域标准卓越贡献者。&#xfeff; 由中国信通院发布可信安全优秀个人&#xff0…

各报文段格式集合

数据链路层-- MAC帧 前导码8B&#xff1a;数据链路层将封装好的MAC帧交付给物理层进行发送&#xff0c;物理层在发送MAC帧前&#xff0c;还要在前面添加8字节的前导码&#xff08;分为7字节的前同步码1字节的帧开始定界符&#xff09;MAC地址长度6B数据长度46&#xff5e;1500B…

ROS 工作空间及功能包

ROS工作空间&#xff08;workspace&#xff09;是一个存放工程开发相关文件的文件夹。 1. 什么是ROS的工作空间 使用ROS实现机器人开发的主要手段是写代码&#xff0c;这些代码文件存放的空间就是工作空间。 工作空间&#xff08;workspace&#xff09;是一个用于存放工程开发…

电表采集器采集的是哪些参数?

电表采集器是一种能够远程收集电表数据的设备&#xff0c;通常被用于电能计量和管理。电表采集器能够通过无线通信技术&#xff0c;如GPRS、CDMA、3G、4G、5G等&#xff0c;将电表数据传输到数据中心&#xff0c;以便进行数据分析和处理。 电表采集器采集的参数包括以下几个方面…

naco(替代Eureka)注册中心

Nacos初步学习 Nacos 是一个开源的服务注册和配置中心&#xff0c;它允许您注册、注销和发现服务实例&#xff0c;并提供了配置管理的功能。下面是Nacos的最基础用法&#xff1a; 1. 服务注册和发现&#xff1a; 首先&#xff0c;您需要将您的应用程序或服务注册到Nacos中。…

Android maven could not get http://192.xx

网页流程仓库ip都能访问&#xff0c;android 发包出现如上提示。原来我电脑自身使用了 vpn&#xff0c;导致 红色框内的代理打开了&#xff0c;注释点问题解决。android studio有自身的代理文件&#xff0c;不依赖windows系统的代理配置&#xff0c;即使set http_proxy也是无效…

【深入MaxCompute】人力家:借助Information Schema合理治理费用

简介&#xff1a; 人力家是由阿里钉钉和人力窝共同投资成立&#xff0c;帮助客户进入人力资源数字化&#xff0c;依靠产品技术创新驱动战略的互联网公司。本文将为大家带来MaxCompute与人力家客户案例深度解读。 作者&#xff1a;石玉阳 人力家 高级数据研发工程师 业务简介 …

“益路同行”栏目人物专访 第0010期——中国公益万里行发起人李现

中国善网在本届&#xff08;第十届&#xff09;慈展会上特别推出了《益路同行》采访栏目&#xff0c;《益路同行》栏目旨在寻觅公益之路上同行者的故事&#xff0c;挖掘公益更深层次的内涵&#xff0c;探索新时代公益发展道路。希望公益企业、人物、故事被更多人看到&#xff0…

Spring Boot项目在Windows上的自启动策略与Windows自动登录配置

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

腾讯发布《2023数字经济高质量发展报告》

导读 2018年9月30日&#xff0c;腾讯宣布“扎根消费互联网&#xff0c;拥抱产业互联网”的全新战略&#xff0c;并进行历史上第三次大规模组织变革&#xff0c;成立云与智慧产业事业群&#xff08;简称CSIG&#xff09;&#xff0c;开启ToB领域的深耕。也是在这一年&#xff…

有什么好用的站内搜索SaaS能帮网站实现站内搜索功能?

在当今数字时代&#xff0c;拥有一个用户友好且高效的网站对于企业在线发展至关重要。一个能够极大增强用户体验的关键功能就是网站内部搜索能力。这正是站内搜索SaaS发挥作用的地方。 站内搜索SaaS是指一种基于云的软件解决方案&#xff0c;使网站能够实现内部搜索功能。借助…

设计模式 - 迭代器模式

目录 一. 前言 二. 实现 三. 优缺点 一. 前言 迭代器模式是一种行为型设计模式&#xff0c;它提供了一种统一的方式来访问集合对象中的元素&#xff0c;而不暴露集合内部的表示方式。简单地说&#xff0c;就是将遍历集合的责任封装到一个单独的对象中&#xff0c;我们可以按…