阿里巴巴实习模拟笔试题:有一个n行n列的方阵,对应每个位置上有一个升降杆,只能平移或下滑,升降杆提升速度是每1单位时间,计算出这个最短时间

 

 在一个巨大的水池内,有一个n行n列的方阵,对应每个位置上有一个升降杆,参赛者可以在升降杆之间移动;在开始时刻每个升降杆的高度不同,但是具体是多少高度会显示出来,每个升降杆都有开关让参赛者控制升降杆移动。
现要求参赛选手以最短的等待时间从(0,0)到达(n-1,n-1)。在升降杆之间移动时可以选择相邻的上、下、左、右四个方向的升降杆,但是只能平移或下滑,即在高度相同的两个升降杆之间移动或从高处移到低处,如果一个升降杆的高度比其他四个方向上的升降杆的低,则必须等待升降杆提升至高度于其他相邻任意之一相同时才能移动,升降杆提升速度是每1单位时间能升高1单位高度。
请帮主持人设计一个程序计算出这个最短时间,用以判断每个选手是否过关。
举例如下:
Input: [[0,5],[6,3]]
Output: 5
解释,升降杆的分布及其高度如下所示:
0 5
6 3
开始在(0,0),你不能去其他其他升降杆,因为相邻的升降杆的高度都大于0,你等待升降杆提升到相同高度时才能移动,从高处到低处不需要等待。
(0,0) ->(0,1) ->(1,1)需要等待5个单位时间
(0,0)-> (1,0) ->(1,1)需要等待6个单位时间
所以输出最小时间是5,如果参赛者大于这个时间就失败了。
Input: [[0,1,2,3,4],[24,23,22,21,5],[12,13,14,15,16],[11,17,18,19,20],[10,9,8,7,6]]
Output: 16
解释,升降杆的分布及其高度如下所示:
0  1    2    3    4
24  23 22  21    5
12 13  14  15 16

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值