7-5 列车厢调度 (25 分)

7-5 列车厢调度 (25 分)

                   1  ======   <--移动方向/ 3 =====          \2  ======   -->移动方向

大家或许在某些数据结构教材上见到过“列车厢调度问题”(当然没见过也不要紧)。今天,我们就来实际操作一下列车厢的调度。对照上方的ASCII字符图,问题描述如下:

有三条平行的列车轨道(1、2、3)以及1-3和2-3两段连接轨道。现有一列车厢停在1号轨道上,请利用两条连接轨道以及3号轨道,将车厢按照要求的顺序转移到2号轨道。规则是:

每次转移1节车厢;
处在1号轨道的车厢要么经过1-3连接道进入3号轨道(该操作记为"1->3"),要么经过两条连接轨道直接进入2号轨道(该操作记为"1->2");
一旦车厢进入2号轨道,就不可以再移出该轨道;
处在3号轨道的车厢,只能经过2-3连接道进入2号轨道(该操作记为"3->2");
显然,任何车厢不能穿过、跨越或绕过其它车厢进行移动。
对于给定的1号停车顺序,如果经过调度能够实现2号轨道要求的顺序,则给出操作序列;如果不能,就反问用户 Are(你) you(是) kidding(凯丁) me(么)?

输入格式:
两行由大写字母组成的非空字符串,第一行表示停在1号轨道上的车厢从左到右的顺序,第二行表示要求车厢停到2号轨道的进道顺序(输入样例1中第二行CBA表示车厢在2号轨道的停放从左到右是ABC,因为C最先进入,所以在最右边)。两行字符串长度相同且不超过26(因为只有26个大写字母),每个字母表示一节车厢。题目保证同一行内的字母不重复且两行的字母集相同。

输出格式:
如果能够成功调度,给出最短的操作序列,每个操作占一行。所谓“最短”,即如果1->2可以完成的调度,就不要通过1->3和3->2来实现。如果不能调度,输出 “Are you kidding me?”

输入样例1:

ABC
CBA
输出样例1:
1->3
1->3
1->2
3->2
3->2
输入样例2:
ABC
CAB
输出样例2:
Are you kidding me?

#include <bits/stdc++.h>
using namespace std;
int main()
{int i=0,flag=0;stack<char>a,b;char st[100],re[100];while ((st[i]=getchar())!='\n'){i++;}st[i]='\0';for (int i=strlen(st)-1;i>=0;i--){a.push(st[i]);}i=0;while ((re[i]=getchar())!='\n'){i++;}re[i]='\0';int k=0;while (k!=strlen(re)){if (!a.empty()&&a.top()!=re[k])      //移入3暂存 {b.push(a.top());a.pop();}else if (!a.empty()&&a.top()==re[k])      //直接移入2 {a.pop();k++;}while (!b.empty()&&b.top()==re[k])    //从暂存中提取 {b.pop();k++;}if (a.empty()&&!b.empty()&&b.top()!=re[k]){break;}}if (k==strlen(re)){flag=1;}while (!a.empty()) a.pop();while (!b.empty()) b.pop();k=0;for (int i=strlen(st)-1;i>=0;i--){a.push(st[i]);}
//	flag=1;if (flag==0){printf("Are you kidding me?\n");return 0;}if (flag==1){while (k<strlen(re)){while (!b.empty()&&b.top()==re[k])    //从暂存中提取 {printf("3->2\n");b.pop();k++;}if (!a.empty()&&a.top()==re[k])      //直接移入2 {printf("1->2\n");a.pop();k++;}else if (!a.empty()&&a.top()!=re[k])      //移入3暂存 {printf("1->3\n");b.push(a.top());a.pop();}if (a.empty()&&!b.empty()&&b.top()!=re[k]){break;}}}return 0;
}

坑点:在对比1栈(起始轨道)和re数组(目标轨道)时,遇到相同的就移到目标轨道,否则移入3栈暂存,当从1栈开始移动时,只有两个选择:

  • 移动到2栈,即目标栈
  • 移动到3栈,即暂存栈

当暂存栈符合re数组的要求时,一定要用while循环(任意类型循环都行,只需要控制好条件)将所有符合的字符全部pop出来,不然很可能出现遗漏问题(测试点2),例如:

ABCDEF
CDBAEF
左侧为正确答案
在这里插入图片描述

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

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

相关文章

64位系统下,一个32位的程序究竟可以申请到多少内存,4GB还是更多

前言&#xff1a; cpu的位是指一次性可处理的数据量是多少&#xff0c;1字节8位&#xff0c;32位处理器可以一次性处理4个字节的数据量&#xff0c;依次类推。32位操作系统针对的32位的CPU设计。64位操作系统针对的64位的CPU设计。操作系统只是硬件和应用软件中间的一个平台。我…

长二F发射神十二飞船圆满成功!三名航天员飞向空间站天和核心舱

来源&#xff1a;中国航天科技集团文&#xff1a;陈立 刘岩编辑&#xff1a;杨成 高一鸣校对&#xff1a;林佳昕监制&#xff1a;索阿娣6月17日9时22分长征二号F运载火箭点火起飞中国航天员聂海胜、刘伯明、汤洪波乘坐神舟十二号载人飞船在“神箭”长二F托举下从酒泉卫星发射中…

.net core中不支持GB2312编码的问题

今天在用core实现读取文件内容时出现了中文乱码的问题&#xff0c;特此记录下。代码如下&#xff1a;static void Main(string[] args){string path "F:\\1.txt";StreamReader sr new StreamReader(path, Encoding.Default);String line;while ((line sr.ReadLine…

脑机融合技术的哲学审思

来源&#xff1a;《科学技术哲学研究》2020年第6期作者&#xff1a;张学义&#xff08;东南大学哲学与科学系&#xff09;潘平平&#xff08;华为南京所&#xff09;庄桂山&#xff08;东南大学成贤学院&#xff09;国家社科基金重大项目“问题哲学理论前沿与理论创新研究”(18…

“哪里有人喜欢孤独,不过是害怕失望罢了”———村上春树《东尼泷谷》观后感...

每个人发自内心的感受&#xff0c;都是孤独的&#xff0c;哪怕表面多么欢快。 ——By 浪漫Chopin 配乐&#xff1a; http://music.163.com/song/498210/?userid539620943 东尼的一生都是孤独的&#xff0c;生下来父亲带他到处流浪&#xff0c;对他不管不问。 他自己做饭&…

“新一代城市大脑建设与发展“专家研讨会

2021年6月城市大脑全球标准研究组成员在国家级核心期刊发表论文&#xff08;6月末出版&#xff09;&#xff0c;阐述了关于城市大脑的最新进展&#xff0c;基于城市大脑全球标准研究&#xff0c;形成新一代城市大脑的“1N”模式建设方案和九个实施步骤&#xff1b;突出了直接应…

进程的控制——获取系统进程信息

获取系统进程 ToolHelp函数&#xff1b;CreateToolhelp32Snapshot函数获取当前系统内执行的进程拍快照&#xff08;Snapshot&#xff09;&#xff0c;即获得进程列表&#xff1b;Process32First函数和Process32Next函数遍历列表&#xff1b;快照头文件&#xff1a;#include<…

Science: 四万张大脑图像首次揭示人脑白质的基因基础

来源&#xff1a;青牛帮脑白质&#xff0c;是大脑内部神经纤维聚集的地方&#xff0c;由于其区域比细胞体聚集的大脑表层颜色浅&#xff0c;故名脑白质。人到了大约二十岁时&#xff0c;白质才会在不同脑区逐渐发育完全&#xff0c;而其生长的时机与成熟程度&#xff0c;会影响…

IMT-2030(6G)推进组发布《6G总体愿景与潜在关键技术》白皮书

来源&#xff1a;中国信通院CATCT编辑&#xff1a;蒲蒲当前&#xff0c;新一轮科技革命和产业变革突飞猛进&#xff0c;随着5G商用的大规模部署&#xff0c;全球业界已开启对下一代移动通信&#xff08;6G&#xff09;的探索研究。日前&#xff0c;IMT-2030(6G)推进组&#xff…

PHP中foreach遍历循环的使用(两种用法)

foreach在循环遍历数组时是很便利的&#xff0c;PHP提供了两种方法&#xff1a;1. 输出不显下标 2.输出显示下标 (注意&#xff1a; foreach不支持消除错误信息) 题目如图 输出不显下标&#xff1a; foreach($ students as $key) { echo " $key"."< br/>…

【博客园2018总结帖】21天,在Github上获取 6300 star

大家好&#xff0c;我是程序员小吴。12月初我在GitHub上上传了一个仓库&#xff0c;到现在为止获取了 6300 star&#xff0c;下面和大家聊聊关于项目启动的初衷、面临的一些困难和未来的计划。 「LeetcodeAnimation」的萌芽&#xff1f; 在刷Leetcode的过程中&#xff0c;遇到很…

最强原创综述!当强化学习邂逅组合优化

『运筹OR帷幄』转载来源&#xff1a;运筹OR帷幄作者&#xff1a;黄含驰未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#xff08;城市&#xff09;云脑研究计划&#xff0c;构建互联网&…

数学认知中的具身进路及其哲学观初探

来源&#xff1a;《科学技术哲学研究》2020年第6期作者&#xff1a;王东&#xff08;北京工商大学马克思主义学院&#xff09;吴彤&#xff08;清华大学人文学院&#xff09;国家社会科学基金重大课题“科学实践哲学与地方性知识研究”(13&ZD068)从数学思想史以及数学哲学的…

李德毅院士:探索新一代人工智能产业发展

来源&#xff1a;主线科技2021年5月14日&#xff0c;主线科技联合中国人工智能学会智驾专委会正式发起成立“新一代人工智能物流创新中心”&#xff0c;并携手福佑卡车开启中国首个干线物流自动驾驶商业项目。在此次活动上&#xff0c;中国工程院院士、CAAI名誉理事长、主线科技…

AI产业链全景图!【物联网智商精选】

来源&#xff1a;ittbankAI产业链全景图最后给大家介绍一款英伟达高性能AI边缘计算超级计算机模块&#xff1a;NVIDIA JETSON TX2Jetson TX2是NIVDIA瞄准人工智能在Jetson TK1和TX1推出后的升级TX2的GPU和CPU都进行了升级&#xff0c;内存增加到了8GB、存储增加到了32GB&#…

通用AI咋发展?向大脑学习是条路子

来源&#xff1a;中国科学报作者&#xff1a;郑金武编辑&#xff1a;赵路排版&#xff1a;志海作为代表自然界拥有最通用智能的生物大脑&#xff0c;可以借助低功耗和少量后天数据&#xff0c;实现在复杂环境下执行复杂任务的智能行为。因此&#xff0c;探索生物大脑智能认知的…

MFC随机博弈黑白棋

随机博弈黑白棋 随机博弈黑白棋 TxyITxs | 随机博弈黑白棋 | 2019.04.21 摘要 通过随机落子&#xff0c;实现黑白棋的博弈。无任何落子规则&#xff0c;棋子死活与围棋中棋子的死活一致&#xff0c;即存在至少一口气。动态模拟双方博弈&#xff0c;但棋盘无落子位置时停止。…

章鱼有9个大脑能编辑基因,智商高到无法理解,为何没发展出文明

来源&#xff1a;科学杂志按照进化论的观点&#xff0c;生物演化出脊椎&#xff0c;是发展出更高智商的敲门砖。因为脊椎让生物体内的神经高度集中&#xff0c;反应速度明显加快&#xff0c;并且还有利于大脑向更加高级的结构演化。事实也确实如此&#xff0c;如果盘点世界上最…

华为徐文伟:用数学和系统工程方法推进未来网络研究

来源&#xff1a;华为在2021第五届未来网络发展大会上&#xff0c;来自产业界、学术界、研究机构等领域的专家、行业领袖&#xff0c;围绕网络操作系统、6G通信、网络安全、工业互联网等热点话题&#xff0c;共同探讨新型网络技术的攻关与变革。华为董事、战略研究院院长徐文伟…