今日头条笔试题(一)
来源:互联网 发布:手机家装软件 编辑:程序博客网 时间:2024/04/29 04:58
车厢排序
一列火车有n个车厢标记为1,2,3,4,5,6…n
现在因为某些原因,需要调整车厢的相对顺序
例如需要将车厢顺序调整为2,3,1,4,5,6…n
由于车厢庞大,且车厢只能停留在铁轨上,所以不能随心所欲的调整相对顺序
现在只能利用两条并行的铁轨对车厢的顺序进行调整
例如
原序列为1,2的车厢
车厢1进入铁轨1停止
车厢2进入铁轨2,然后再开出
然后铁轨1上的车厢1再开出
这样可以使得车厢2调整到车厢1得前面
现在给你一个期望得到的车厢顺序,请你判断该顺序能否通过以上方法调整车厢顺序而得到
(车厢只能前进无法后退)
输入格式
第一行n表示有n个车厢
第二行有n个数为1~n的排列用空格隔开,表示期望得到的车厢顺序
输出:若可以得到则输出Yes 否则输出No
样例输入1:
2
2 1
样例输出1:
Yes
样例输入2:
5
3 4 1 5 2
样例输出2:
Yes
样例输入3:
5
3 4 2 1 5
样例输出3:
No
个人分析:
比如样例输入2:
5
3 4 1 5 2
样例输出2:
Yes
图解题意:
车厢1、2进入铁轨2,车厢3、4、5进入铁轨1,铁轨就像队列一样,先进先出
车厢5先停留下来,铁轨2的车厢1先行开出:
然后车厢5先出,车厢2最后开出即可。
而样例输入3:
5
3 4 2 1 5
样例输出3:
No
开始
车厢1、2进入铁轨2,车厢3、4、5进入铁轨1,铁轨就像队列一样,先进先出
然而车厢3、4车厢出来之后,车厢2无法开出,所以这个顺寻不可行:
故不可以做到,输出No。
算法分析:
或许最接地气的算法就是用链表或者队列什么的,我分析给出如下算法:
关键变量:
int n; //车厢节数int Arrays[n]; //期望顺序static int A[n]; //bool数组,开出的车厢号,即经过了铁轨1、2的车厢static int max; //已出车厢最大号码,大于这个号码的任何车厢都可以出static int only; //小于max的车厢只有一个,这个唯一的号码存在only中
主函数:
int main(){ //输入的n和期望序列存储在n和Arrays[n]中 for(int i=0;i<n;i++)//逐个车厢检测 { if(!fun(传入参数))//按序判断一节车厢是否可以 { printf("No"); return 0; } } printf("Yes"); return 0;}
两个函数,第一个为判断一节车厢是否可以:
int fun(传入参数){ if(该节车厢号为1){ max=1; return 1; //表示可以 } else if(该节车厢大于max){ max=a; return 1; //表示可以 } else if(该节车厢小于max并且刚好等于only){ only=changeonly(传入参数); //改变only return 1; //表示可以 } else return 0; //表示不可以}
第二个函数为改变only值:
int changeonly(传入参数){ for(i=only;only<max;i++) { if(A[i]==0) only=i; } return only;}
我面试时就写的这个,我现在就写个伪代码,不知道是不是最好的,希望大家多多思考,多多指正。
- 今日头条笔试题(一)
- 今日头条笔试题
- 今日头条,笔试题
- 今日头条笔试题
- 今日头条笔试题
- 今日头条笔试题
- 今日头条笔试题
- 今日头条笔试
- 今日头条--笔试
- 今日头条笔试
- 今日头条笔试
- 多边形构成问题(今日头条笔试题)
- 射气球(今日头条笔试题)? 待解决
- 登山策略(今日头条笔试题)?待解决
- 今日头条 笔试题 (位运算)
- 牛客《今日头条》笔试题
- 2016今日头条后端笔试题
- 今日头条笔试题 数列
- Hyperopt中文文档导读
- linux ssh免输密码
- Zookeeper Paxos思路 简单生动讲解(转载)
- Java交换两个数的四种方法和效率
- Python CRC-Modbus的实现
- 今日头条笔试题(一)
- Leetcode Remove Duplicates from Sorted Array 解题报告
- Lintcode 12. 带最小值操作的栈
- 实验10 GUI事件处理
- VMware Workstation Pro(虚拟机软件)官方专业版V14.1.0.7370693下载 | 含vmware workstation 14 密钥
- 数据结构实验之排序四:寻找大富翁
- 【荐】深入Angular自定义表单控件
- AbstractQueuedSynchronizer框架浅析
- 深度学习入门:Tensorflow实战Digit Recognizer