铁轨!!!!
来源:互联网 发布:手机黑科技软件 编辑:程序博客网 时间:2024/04/27 11:23
问题描述 :
某城市,有一个火车站,铁轨铺设如图所示,有n节车厢从A方向驶入车站,按照进站的顺序
编号为 1 ~ n ,你的任务是让他们按照某种特定的顺序进入B方向的铁轨,并使出车站,为了重组
车厢,你可以借用中转站C,这是一个可以停放任意多节车厢的车站,但由于末端封顶了,驶入C的车厢
必须按照相反的循序使出C,对于灭一个车厢,一旦从A进入C,既不能在回到A了,一旦C进入B,就不能
回到C了,换句话说,在任意的时刻,只有两种的选择, A->C : C->B
C车轨的形状是这个样子的.
输入结果:
5
1 2 3 4 5
5
5 4 1 2 3
6
6 5 4 3 2 1
----------
输出结果:
yes
no
yes
问题分析 :
一开始我要是拿到这样的一个题目,我就会想,我怎么能知道,他能按照答案的一样给我输出来
如果一个进入车站的顺序是,1~N,那么出站的顺序中,一定不会出现,1~N中的真子集,(前提这个真子集不能作为开头)
这样的话就可以写出一个伪代码了 :
首先需要记录,使出车站的数组A顺序.
创建一个栈B stack<int>B
进行一个while判断
A[a];
a = 1,b = 1;
1.while (a <= n);
2.数组A[a]和b是否相同 相同 : a++,b++ 不相同:执行3
3.数组A[a] 和栈B的栈头是否相同 && 栈不能为空 相同:出栈,a++ 不相同 : 执行4
4.b是否小于n 是 : 压入栈 否 :执行5
5.退出,这个出站顺序不成立
这是全部的代码:但是还有有一点要注意,在编写这个代码的过程中,在判断第二个if的时候,一定要注意
!empty() 先放在前面,这是因为在还没有压入栈的时候,栈中是没有任何元素的,这样就造成了,空栈拿数据
的情况,会导致段错误,如果 !empty放在前面就会避免这个问题,这是因为, 逻辑操作符的一个特性,如果
逻辑与 两个条件中有一个能决定这个操作的结果,他就不会进行下一步的运算.!empty在空栈时返回的是1,
!1就为0,这样就符合了逻辑与的特性,(逻辑与两个条件都是1才会放回1,如果其中一个是0,就会返回0)
这个操作就决定了以后的返回,他就不会在执行后面的语句了,也就不会从空栈中取出数据了,段错误也就不存在了
- 铁轨
- 铁轨
- 铁轨
- 铁轨
- 铁轨
- 铁轨!!!
- 铁轨!!!!
- 铁轨
- 铁轨
- 铁轨
- 铁轨 栈
- 栈 铁轨
- 铁轨问题
- 栈------铁轨
- 铁轨问题
- 铁轨(Rails)
- UVa514 铁轨
- 170402铁轨
- C#中英文对齐
- sqlconnection,sqlcommand,sqldataadapter,sqldatareader,dataset的关系详解
- 同一进程中的线程究竟共享哪些资源
- Python基础教程(第五章)
- go语言,一些零碎没时间整理
- 铁轨!!!!
- poj 2516 (多次费用流)
- HDU 3507 Print Article (斜率优化)
- 彩信的拦截与发送
- 深入WPF--Style
- 测试人员与需求关系
- Objective-C 文件学些
- 二叉树的遍历,深度求解以及竖向打印详析
- VS2013打包VC++程序