华为软开 笔试 5.11
1 磁盘读写中磁头最短移动
给定当前磁头位置和一系列磁道请求位置编号,先往一个方向移动,移动到请求磁道最外道时如果有未读磁道则反方向,输出磁头移动距离最短的扫描方式的扫描序列
- 向两头移动距离相同时优先向外道移动
- 若有重复的请求磁道只输出一次
- 请求磁道或起始位置不在0-255,请求序列大于10个元素则输出-1表示错误
思路:只有10个不到的数,先将请求序列排序去重,按照起始位置相对于请求序列的位置分为三种情况 s|————|,|——s——|,|————|s,只有当起始位置在请求序列两端之间需要比较先往内外道移动的总距离
只过了90%,不知道是什么原因
2 超级玛丽过吊桥
给定N个木板的吊桥,从吊桥一段的外侧开始跳(第0块),一次可条1/2/3步,其中有一些木板是陷阱,踩到即消耗一点生命值并在陷阱原地复活,刚好跳到吊桥的另一侧(第N+1块)则通关。给定起始生命数量M(范围1-5),吊桥长度N(范围1-32),陷阱木板数量K(范围1-32)及K个陷阱木板的编号(1-based),求保证生命值大于0条件下所有可能的通关路线数量
思路:定义到达位置i,生命值为j的方法数为转移方程
其中若 , 则 , 否则; j2,j3同理
边界条件
最后结果为sum( dp[N+1][k] ) , k=1,2,…,K
3 智慧码头
给定一个N*N(范围0-30)的网格,每个网格内有0-2个货物
A车从(0,0)驶入,从(N-1,N-1)驶出,每步只能往右或往下运动
B车从(N-1,N-1)驶入,从(0,0)驶出,每步只能往左或往上运动
每辆车在每个格子只能提取1个货物
规划A、B两车的路线,输出运输货物总和最大值
思路:没啥思路,直接爆搜过了45%,A车到达右下后B车接着往左上搜,不停更新最大运输货物总和。根据当前提取货物数量和距离最终终点的距离之和和当前最大运输货物总量比较,粗略地进行了剪枝。
有懂哥讲一下第三题不
#华为笔试#