ACM详解(6)——栈

我的ACM脚印 2020年12月20日,南京区域赛结束,同时结束的,还有我的两年多的ACM生涯 接下来的寒假重心会向着找实习的方向努力,当然明年还有线下的区域赛、EC-finial以及明年的省赛等等,我都会去认真准备。 这篇文章会写什么 关于我 我的ACM简单的回顾 我的ACM成绩 写给新人 ACM到底和数学建模、挑战杯等等的其他竞赛有什么区别 ACM到底带给我什么了 为什么要打ACM 什么样的人适合去打ACM,什么样的人不适合去打ACM 写给已经进入了ACM的人 我在ACM的训练计划 除了ACM之外的计划 阅读详情

 

堆栈是一种特殊的线性结构,后进先出,只能对栈顶元素操作,典型的操作入栈和出站。下面通过例子介绍基本用法。
题目:Train Problem
 
Problem Description
As the new term comes, the Ignatius Train Station is very busy nowadays. A lot of student want to get back to school by train(because the trains in the Ignatius Train Station is the fastest all over the world ^v^). But here comes a problem, there is only one railway where all the trains stop. So all the trains come in from one side and get out from the other side. For this problem, if train A gets into the railway first, and then train B gets into the railway before train A leaves, train A can't leave until train B leaves. The pictures below figure out the problem. Now the problem for you is, there are at most 9 trains in the station, all the trains has an ID(numbered from 1 to n), the trains get into the railway in an order O1, your task is to determine whether the trains can get out in an order O2.
 
Input
The input contains several test cases. Each test case consists of an integer, the number of trains, and two strings, the order of the trains come in:O1, and the order of the trains leave:O2. The input is terminated by the end of file. More details in the Sample Input.
 
Output
The output contains a string "No." if you can't exchange O2 to O1, or you should output a line contains "Yes.", and then output your way in exchanging the order(you should output "in" for a train getting into the railway, and "out" for a train getting out of the railway). Print a line contains "FINISH" after each test case. More details in the Sample Output.
 
Sample Input
3 123 321
3 123 312
 
Sample Output
Yes.
in
in
in
out
out
out
FINISH
No.
FINISH
 
题目翻译:火车站非常繁忙,火车A 先进站,如果火车B 在火车A 出站之前进站,则或者A 只能等或者B 出站之后再出站(后进先出)。题目要求有n(n 最大为9 ,编号从1 到n) 列火车,给出火车进站的序列,并给出火车出站的序列,让你判断这个要求能否实现,如果能实现写出进站(in) 、出站(out) 的操作序列。
 
解题思路:基本原则就是后进先出,但是对于特定的火车来说是先进后出。所以首先考虑入栈的序列,在入栈的过程根据出栈序列判断是否需要出栈,如果不需要出栈,则继续进栈,如果需要出栈则进行出栈操作。如果要出栈的元素不在栈顶则表示序列不合法。下面以入栈序列1234 和出栈序列1423 进行分析。
 
考虑入栈:1 进栈,栈顶元素为1 ;
考虑出栈:因为栈顶元素与出栈序列中的第一个元素相同,1 出栈,出栈后栈中无元素;
考虑出栈:栈中无元素,所以不用出栈;
考虑入栈:2 进栈,栈顶元素为2 ;
考虑出栈:因为栈顶元素是2 ,而要出栈的元素是4 ,所以不能出栈;
考虑入栈:3 进栈,栈顶元素为3 ,栈中包括2 和3 ;
考虑出栈:因为栈顶元素是3 ,而要出栈的元素是4 ,所以不能出栈;
考虑入栈:4 进栈,栈顶元素为4 ,栈中包括2 、3 和4 ;
考虑出栈:因为栈顶元素是4 ,而要出栈的元素是4 ,所以4 出栈,出栈后栈中元素为2 和3,3 为栈顶元素。
考虑出栈:因为栈顶元素是3 ,而要出栈的元素是2 ,所以不能出栈;
考虑入栈:所有元素已经入栈,所以不能出栈;
无法入栈也无法出栈,而栈中有元素,所以序列不合法。
 
下面是参考代码:
 
       /*
        * Train Problem I
        */
       public static String test2(int n,String s1,String s2){
              // 记录操作结果
              StringBuffer sb = new StringBuffer();
              // 表示栈
              int[] a=new int[9];
              // 表示栈顶元素
              int index=-1;
              // 入栈元素序号
              int index1=0;
              // 出栈元素序号
              int index2=0;
              // 把第一个元素放到栈中
              index++;
              a[index]=s1.charAt(index1);
              index1++;
              sb.append("in/n");
              // 只要栈中有元素,则处理
              while(index1<s1.length() || index2<s2.length()){
                     // 如果栈顶元素是与s2 中的元素一致,则出栈
                     if(index>-1 && s2.charAt(index2)==a[index]){
                            index--;
                            sb.append("out/n");
                            index2++;
                     }else if(index1==s1.length()){ // 不能实现
                            break;
                     }else{ // 如果否则把s1 中的下一个元素加入到栈中
                            index++;
                            a[index] = s1.charAt(index1);
                            index1++;
                            sb.append("in/n");
                     }
              }
              if(index!=-1){
                     return "No./nFINISH/n";
              }else{
                     sb.insert(0,"Yes./n");
                     sb.append("FINISH/n");
                     return sb.toString();
              }
       }
延伸阅读:

李绪成 优快云 Blog:http://blog.youkuaiyun.com/javaeeteacher
优快云学生大本营:
http://student.youkuaiyun.com/space.php?uid=124362
如果喜欢我的文章,就加我为好友:
http://student.youkuaiyun.com/invite.php?u=124362&c=7be8ba2b6f3b6cc5

【ACM Reference Format】格式问题详解与修改指南 ACM 提供了严格的格式要求,确保文献引用、页眉、页脚等部分的统一性。本文将介绍 ACM Reference Format 中常见的格式问题,并提供详细的解决方案,帮助您轻松应对这些问题,确保您的论文符合 ACM 的排版标准。推荐的做法是将 ISBN 和 DOI 的值设置为空,而不是直接注释掉相关代码。在使用 ACM-Reference-Format 样式时,您可能会遇到引用顺序与论文中实际引用的顺序不一致的问题。确保将此命令放在文档的导言部分,这样就可以正确显示所需的作者简称。文件)中的排序设置造成的。 阅读详情

相关推荐

ACM简介

一、什么是ACM 计算机协会(英语:Association for Computing Machinery,简称ACM)是一个世界性的计算机从业员专业组织,创立于1947年,是世界上第一个科学性及教育性计算机学会,亦是现时全球最大的电脑相关学会。 ACM国际大学生程序设计竞赛(ACM-ICPC或ICPC)是由美国计算机协会(ACM)主办的,一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。ACM/ICPC 是世界上公认的规模最大、水平最高的国际大学生程序设计竞赛,其目的旨

m0_62021646的博客 1万+

hdu1022:Train Problem (数据结构 栈 递归 dfs【深搜】)

As the new term comes, the Ignatius Train Station is very busy nowadays. A lot of student want to get back to school by train(because the trains in the Ignatius Train Station is the fastest all over the world ^v^). But here comes a problem, there is only o

qq_44734876的博客 180

nvlddmkm事件ID14报错排查全指南:从找不到描述到显卡驱动崩溃

系统日志中的“无法找到描述”往往让人一头雾水,但这类提示其实隐藏着驱动故障的关键线索。Windows事件查看器通过事件源和ID记录系统异常,其中显卡驱动相关的内核模式驱动组件一旦超时失败,就会触发TDR机制,产生13、14、153等不同事件ID。理解这些ID的含义,比纠结“找不到描述”本身更重要。对于频繁出现的驱动崩溃问题,可以从日志频率和发生场景判断方向,再通过安全模式下彻底清理驱动、关闭冲突软件、检查供电和温度等步骤逐层定位。无论是游戏满载黑屏,还是睡眠唤醒后闪退,掌握NVIDIA驱动日志的解读逻辑,都

weixin_30545945的博客 418

poj2559 Largest Rectangle in a Histogram 栈

DescriptionA histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rectangles have equal widths but may have different heights. For example, the figure on the ...

Little_boy_z的博客 260

【第六届起重机创意大赛国一作品——资料分享】

文章目录前言一、比赛内容分析二、确定方案与作品模型1.方案简图2.作品模型三、电控部分控制思路单片机选择与资源分配拓展板的设计接线与走线代码分享总结

qq_19308801的博客 7783

【毕业设计参考】基于yolov8+pyqt5自适应界面设计的锂电池表面缺陷检测系统

基于YOLOv8+PyQt5的锂电池表面缺陷检测系统结合了先进的目标检测技术与友好的用户界面设计,为锂电池质量检测提供了一种高效、准确的解决方案。未来,随着深度学习技术的不断发展,我们可以进一步优化模型,提高检测精度和速度,同时拓展系统功能,如实现实时视频流检测、与生产系统的深度集成等,为锂电池产业的发展注入新的活力。希望本文对大家在相关领域的研究和实践有所帮助,欢迎大家在评论区交流讨论。

1182

CSU-ACM2017暑期训练1-Debug与STL E - Train Problem I

E - Train Problem I As the new term comes, the Ignatius Train Station is very busy nowadays. A lot of student want to get back to school by train(because the trains in the Ignatius Train Station is the

xiyue_jiang的博客 412

MMCV安装后报错‘from mmcv import Config’?别慌,这是MMCV 2.0的锅!快速降级回退MMCV 1.x全指南

本文详细解析了MMCV 2.0版本升级导致的‘from mmcv import Config’报错问题,提供了从诊断到降级回退MMCV 1.x的完整解决方案。通过pip和OpenMIM工具链的实操指南,帮助开发者快速解决版本冲突,确保项目稳定运行。

weixin_29102619的博客 263

2.STL Practice

2.STL PracticeA - {A} + {B} HDU - 1412 (set)B - Train Problem I HDU - 1022 (stack)C - Alice, Bob and Candies CodeForces - 1352D (deque)D - Let the Balloon Rise HDU - 1004 (map)E - 全排列 51Nod - 1384F - 水果 HDU - 1263 (map嵌套)G - Running Median HDU - 3282(优先队列)

qq_52008247的博客 4891

逆向实战:如何绕过iTunes 12.6.5.3的反调试机制(附X64dbg插件配置)

本文深入剖析了iTunes 12.6.5.3的反调试机制与登录协议。通过X64dbg动态调试与IDA静态分析,详细演示了如何绕过其反调试检测,并定位到核心的登录协议加密函数,揭示了其请求签名(X-Apple-ActionSignature)的生成逻辑与依赖关系,为客户端安全研究与协议分析提供了实战思路。

weixin_29202213的博客 742

VisionPro 机器视觉案例 之 彩色保险丝个数统计

CogColorSegmenterTool CogColorMatchTool

机器视觉李小白的博客 2353

【 题集 】 【kuangbin带你飞】专题十二 基础DP1

B - Ignatius and the Princess IV Time Limit:1000MS     Memory Limit:32767KB     64bit IO Format:%I64d & %I64 Description "OK, you are not too bad, em... But you can never pass the next te

Joursion 1333

华为HCIE之TS部分整理

TroubleShooting 整体拓扑 1. MSTP 题目需求:site1 中,CLIENT1 属于 VLAN12,CLIENT3 属于 VLAN34;MSTP 中的 VLAN12 属于 instance1,vlan34 属于 instance2;两个 instance 的主备根桥分别在 SW1 和 SW2 上,并且要求 CLIENT1访问 R1 时经过的路径是 SW3-SW1-R1;同时要求 CLIENT3 访问 R1 时经过的路径是SW3-SW2-R1; 排错思路: ①查看SW3 SW1 SW

ledrsnet的博客 5759

acm答案java_java-ACM详解(6)——栈 有答案版 全国软件设计大赛 参考试题

ACM详解(6)——栈收藏堆栈是一种特殊的线性结构,后进先出,只能对栈顶元素操作,典型的操作入栈和出站。下面通过例子介绍基本用法。题目:Train ProblemProblem DescriptionAs the new term com es, the Ignatius Train Station is very busy nowadays. A l ot of student want to ...

weixin_30552495的博客 348

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ACM算法-栈

经过深思熟虑,小周我想去打ACM,大学生国际程序设计比赛,可是奈何个人实力实在不行,算法这一块实在薄弱,我就想从零开始学习算法,如果有同学想一起学习的可以点下关注,让我们一起去学习。 今天我学到的内容是 数据结构--->栈 原理: 栈:又名堆栈,是一种运算受限制的线性表,限制是:仅仅允许从表的一段插入和删除运算。这一段称为栈顶,把另一端称为栈底。向一个栈插入新元素又称...

周修涵的博客 487

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

ACM 全部算法总结

ACM 所有算法 数据结构 栈 队列 链表 哈希表 哈希数组 堆 优先队列 双端队列 可并堆 左偏堆 二叉查找树 Treap 伸展树 并查集 集合计数问题 二分图的识别 平衡二叉树 二叉排序树 线段树 一维线段树 二维线段树 树状数组 一维树状数组 N维树状数组 字典树 后缀数组 后缀树 块状链表 哈夫曼树 桶 跳跃表 Tr...

繁凡さん的博客 5351

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

关于我的大学ACM江湖

文章目录1、引言2、心得与体会3、分享模板 1、引言 大二下学期正式入ACM,大家一看这时间就知道算是挺晚的了,因为我大一比较迷茫,没有在大学加过任何部门,学习也提不上什么劲,大二上开始有了自己的想法,在班上成功竞选上了学习委员,然后我越发积极,在大二上的寒假假期独自在家刷题,目的就是为了蓝桥杯,初赛挺适合新手锻炼的,刷题目的就是为了学校的选拔赛,争取名额,后面当然得到了名额,最后在比赛也取得了省...

超逸の学习技术博客 1万+

有关在ACM/ICPC竞赛环境下的GCC/G++的拓栈外挂的研究记录

0、起因 有的时候,DFS总是比BFS受人喜爱——毕竟DFS简单粗暴

HDU_toraoh 5770

linux ACM驱动详解

Module_init中会注册tty_driver,tty_device会在acm usb_driver的probe中注册。 每个ACM设备都由2个Interface组成,第一个interface有一个interrupt endpoint主要负责控制,第二个interface主要负责数据传输,有2个endpoint,有可能是两个int,也有可能是2个bulk。他们都是成对出现的。 比如: 这

知秋一叶 1万+

ACM算法训练【模拟栈,表达式求值】

实际应该先计算1+2。应该用什么数据结构:当然是栈。很简单的题,代码奉上。

大河之犬的博客 495

ACM-栈之Train Problem I——hdu1022

Train Problem I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 18202 Accepted Submission(s): 6819 Problem Description As the new term c

继续激情,继续奋斗。 1544
上一篇: ACM详解(5)——排序
下一篇: ACM详解(5)——排序
老李-大连
博客等级 码龄20年 3206粉丝 308原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值