一种自动包装机的结构如图 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;
}

L2-037 包装机相关推荐

  1. 天体赛练习集 简要题解 - L2

    目录 001 - 紧急救援 002 - 链表去重 003 - 月饼 004 - 这是二叉搜索树吗? 005 - 集合相似度 006 - 树的遍历 007 - 家庭房产 008 - 最长对称子串 009 ...

  2. 2021年CCCC天梯赛 【部分题题解】

    天梯赛有三个level,第一个level基本就是语法题,第二个level是基础算法和STL库的一些应用. 第三个level就是一些难的算法. L3的题都不是太会,有思路但是写不出来. 目录 L1 人与 ...

  3. CCCC 天梯赛 PTA ZOJ 题目 L1 L2 L3

    PTA 天梯赛题目整理 L2 难点 **L2-001 紧急救援** **L2-002 链表去重** **L2-003 月饼** **L2-004 这是二叉搜索树吗** **L2-005 集合相似度** ...

  4. 团体程序设计天梯赛-L2组

    团体程序设计天梯赛-L2组 -------------------------------------------------------------------------------- 题目传送门 ...

  5. 2019~2021近三年天梯赛L2题目练习

    2021 L1-06 吉老师的回归(字符串) 思路 这个题并无难点,纯粹是为了复习一下字符串的相关操作. 读入一行字符串: getline(cin,str1); //对于string类读入,前面的输入 ...

  6. 团体程序设计天梯赛 -- 练习集 (L2合集)

    文章目录 L2-001 紧急救援 (25 分) L2-002 链表去重 (25 分) L2-003 月饼 (25 分) L2-004 这是二叉搜索树吗? (25 分) L2-005 集合相似度 (25 ...

  7. 2021CCCC天梯赛L2题解

    L2第一题:包装机 大体题意是给筐和轨道的容量,然后经过一系列操作后输出流水线上的物品.轨道的操作就像队列,筐的操作符合栈的特性.理解题之后我们就知道了,这是一道模拟送分题,开始加速操作他把. #in ...

  8. PTA L2 题目合集

    L2-001 紧急救援 (25 分) 题解链接 L2-002 链表去重 (25 分) #include<bits/stdc++.h> #define PIS pair <int, s ...

  9. 什么是L1/L2/L3 Cache?

    什么是L1/L2/L3 Cache? Cache Memory也被称为Cache,是存储器子系统的组成部分,存放着程序经常使用的指令和数据,这就是Cache的传统定义.从广义的角度上看,Cache是快 ...

  10. 智能驾驶L2发展策略

    智能驾驶L2发展策略 智能驾驶L2,以们通俗的定义是,以高级辅助驾驶的产品为主的各种巡航产品,包括定速巡航,自适应巡航ACC,预见性巡航,智能巡航等等. 车辆驾驶是集注意力高度集中,手把控方向盘和换挡 ...

最新文章

  1. 堆晶结构_橄榄岩的特殊问题
  2. 成功解决raise ValueError(‘No model found in config file.‘) ValueError: No model found in config file.
  3. NYOJ 514 1的个数
  4. make: *** 没有规则可以创建“default”需要的目标“build”
  5. linux常用命令:touch 命令
  6. ELK 6.2.4搭建
  7. Js-01. 语法、关键保留字、变量
  8. lsdyna如何设置set中的node_list_详解MySQL数据库如何实现类似Oracle的序列?
  9. 卸载symantec endpoint protection
  10. si4438+efm32g210f128
  11. Android 集成百度人脸采集,实现简单人脸采集module
  12. Android 开机时间慢问题debug
  13. python乌龟吃鱼
  14. Istio 南北向流量管理
  15. 0基础能学“软件测试”吗?好学吗?怎么学?
  16. ISCC -MISC-Retrieve_the_passcode
  17. 杭电多校第六场个人补题6 7 9 10 12
  18. 解决百度网盘限速问题
  19. CTF竞赛技术 - CRYPTO从入门到放弃
  20. 2022安徽安全员B考试单选题库预测分享

热门文章

  1. 《明日方舟》游戏分析
  2. Chatgpt 指令收集
  3. OPPO手机进水不读卡,修复
  4. 驳“C语言已经死了”
  5. 什么叫高内聚、低耦合?
  6. 如何跳出深层递归调用(不使用异常)
  7. win2003封闭端口_Win 2003下添加LPT端口有妙招
  8. QCM2290 充电指示灯 —— CHG_LED_SINK
  9. nova与neutron交互
  10. JS判断手机浏览器,并跳转到手机端网页