大家或许在某些数据结构教材上见到过“列车厢调度问题”(当然没见过也不要紧)。今天,我们就来实际操作一下列车厢的调度。对照上方的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?

思路:首先判断轨道1最前面的车厢是否是轨道2所需要的,如果不是的话就把轨道1的车厢放入轨道3中,这里需要注意,我们需要同时进行判断轨道3中的最后一个车厢是不是轨道2所需要的,因为可能有以下的情况
所需顺序为CBADE
1:DE
3:AB
2:C
这个时候就需要把3中的B移到2当中,而不动轨道1的车厢
当轨道1中的内容全部遍历完后,轨道1的车厢要不在轨道2上,要不就是在轨道3上,所以这个时候再对轨道3进行遍历,如果轨道3中的车厢不能放入轨道2,就说明所需顺序不可能实现,输出‘你在逗我?’,如果可以按照顺序塞进去,就可以得到结果了,判定结束的条件是轨道1和轨道3都为空

代码如下

a=input()
b=[]
c=input()
res=[]
i=0
myprint=[]
while(1):if a!='':if a[0]==c[i]:res.append(a[0])i+=1myprint.append('1->2')a=a.replace(a[0],'',1)else:if b!=[] and b[-1]==c[i]:res.append(b[-1])b.pop(-1)i+=1myprint.append('3->2')else:b.append(a[0])myprint.append('1->3')a=a.replace(a[0],'',1)else:if b==[]:for i in myprint:print(i)breakelse:if b[-1]==c[i]:res.append(b[-1])i+=1b.pop(-1)myprint.append('3->2')else:print('Are you kidding me?')break

7-2 列车厢调度(python)相关推荐

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

    7-5 列车厢调度 (25 分) 1 ====== <--移动方向/ 3 ===== \2 ====== -->移动方向 大家或许在某些数据结构教材上见到过"列车厢调度问题&qu ...

  2. pta 习题集5-19 列车厢调度

    1 ====== <--移动方向/3 ===== \2 ====== -->移动方向 大家或许在某些数据结构教材上见到过"列车厢调度问题"(当然没见过也不要紧).今天, ...

  3. 列车厢调度(C语言)

    题目如下: 1 ====== <–移动方向 / 3 ===== \ 2 ====== -->移动方向 有三条平行的列车轨道(1.2.3)以及1-3和2-3两段连接轨道.现有一列车厢停在1号 ...

  4. 7-9 列车厢调度 (25 分)

    1 ====== <--移动方向/3 ===== \2 ====== -->移动方向 大家或许在某些数据结构教材上见到过"列车厢调度问题"(当然没见过也不要紧).今天, ...

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

            1  ======   <--移动方向          /  3 =====            \         2  ======   -->移动方向  大家或许 ...

  6. 车厢调度(信息学奥赛一本通-T1357)

    [题目描述] 有一个火车站,铁路如图所示,每辆火车从A驶入,再从B方向驶出,同时它的车厢可以重新组合.假设从A方向驶来的火车有n节(n≤1000),分别按照顺序编号为1,2,3,-,n.假定在进入车站 ...

  7. python自动翻译excel某一列_【python excel实例教程】怎样用Python将excel的某一列生成一个列表?...

    用python做一个登录程序通过后直接进入某个excel? 是要做python自动化办公吧,这个很不错的,让办公很方便快捷的 python excel进行接口自动化测试,目前只写成了利用多个sheet ...

  8. 旋度的散度为零证明_(大牛分享)实列讲解:Python Sympy计算梯度、散度和旋度...

    今天为大家带来的内容是:(大牛分享)实列讲解:Python Sympy计算梯度.散度和旋度 sympy有个vector 模块,里面提供了求解标量场.向量场的梯度.散度.旋度等计算,官方参考连接: ht ...

  9. 车厢调度(4种方法)

    题目描述 有一个火车站,铁路如图所示,每辆火车从A驶入,再从B方向驶出,同时它的车厢可以重新组合.假设从A方向驶来的火车有n节(n<=1000),分别按照顺序编号为1, 2,3,-,n.假定在进 ...

最新文章

  1. Linux 构建一些 开机就可以使用的命令
  2. 【5 数学规划】实际问题实战
  3. mysql server5.0使用_sco openserver 5.0.5安装使用mysql4.0.21的方法Windows系统 -电脑资料...
  4. Kotlin实战指南十一:扩展函数
  5. 云计算-openstack简介
  6. UTF-8, ASCII, Unicode的介绍与区分
  7. Execution failed for task ':app:mergeDebugResources
  8. mysql自定义函数重载_DBLE 2.18.10.1自定义路由函数开发指引
  9. url上传参 用requestmapping接受_14 个 Spring MVC 顶级技巧,随时用随时爽,一直用一直爽...
  10. skyline TerraBuilder(TB)处理不规则范围影像,去除空值,填充高程等(转载)
  11. 161021_又是两个月还是总结
  12. python json.dumps(output) ^ SyntaxError: invalid syntax
  13. [分类] Jzoj P1320 拯救奶牛
  14. setBounds(left, top, right, bottom)详解
  15. HTML5标签-按功能分类整理
  16. 信息数据采集软件-什么工具可以快速收集信息
  17. 【Kafka】Kafka的安装
  18. 加多芬科技深度剖析--“什么是移动支付服务商“
  19. windows10安装cuda10.2
  20. ROG游戏手机5S Pro上手实测,骁龙888 Plus跑分95万刷新鲁大师记录!

热门文章

  1. 2017.01.05回顾 ORM例子解读
  2. 微信开放平台【第三方平台】java开发总结:验证票据(component_verify_ticket)(-)
  3. JavaAwt子部件定位设置大小,要去掉容器的Layout,Frame默认自带BorderLayout布局,去掉布局用setLayout(null);
  4. 维吉尼亚密码 (原理+代码)
  5. wow 卡正在连接服务器,魔兽世界怀旧服卡蓝条
  6. FTP协议和Samba服务在linux中的应用
  7. 早期英语学习——罗塞塔(五)
  8. 2D游戏中常见的碰撞检测算法思路(附详细思路及部分源码)
  9. elasticsearch报错: illegal argument exception, variable is not found
  10. Rockchip RK3588 kernel dts解析之GPIO Pinctrl