关注
第二题蒙了一会,题主代码肯是对的,但总感觉自己不太踏实,后来索性证明一下~
--------------------------------------
直觉是动态规划, 子问题拆解碰到问题:
从第N层到第i层, 方式只可能有三条:
1)先到第i-1层, 再上一层, 即d[i-1]+1
2)先到i+1层, 再下一层, 即d[i+1]+1
3)如果i是偶数, 还可能是从i/2层坐电梯上来, 即d[i/2]+1
但这样d[i]依赖d[i+1]无法使用动态规划(d为最短路径函数)
下面证明方式2中到i+1层的方式一定是坐电梯直接到的, 否则一定不是最短路径:
要到i+1层同样只有三种方式:
1)从第i层上来, 不可能
快递员要到i层, 因此不可能是从i层走上来的, 除非傻了
2)从坐电梯到第i+1+k层走下来, 注意下楼只有一种方式, 一定是一路走下来
2.1)如果i为偶数, k定为奇数, 总路程s1为: d[(i+1+k)/2]+1+(k+1)
到第i/2层的最短路径一定小于等于先到d[i/2+(k+1)/2]再下楼到i/2层, 因为这是其中的一条路径
即, d[i/2] <= d[i/2+(k+1)/2] + (k+1)/2
因此先到i/2层再坐电梯到i层的路程s2有:
s2 = d[i/2]+1 <= d[i/2+(k+1)/2]+1+(k+1)/2 <d[(i+1+k)/2]+1+(k+1) = s1
所以此时s1一定不是最短路径
2.2)如果i为奇数, k一定为偶数, 总路程s1为: d[(i+1+k)/2]+1+(k+1)
到(i+1)/2层的最短路径一定小于等于其中的一条: 到(i+1)/2+k/2层然后再走下楼
即: d[(i+1)/2] <= d[(i+1)/2+k/2]+k/2
因此因此先到(i+1)/2层再坐电梯到i+1层再到第i层的路程s2有:
s2 = d[(i+1)/2] + 1 + 1 <= d[(i+1)/2+k/2]+k/2+1+1 <= d[(i+1+k)/2]+1+(k+1)=s1
当且仅当k=0时等号成立
2.3)综上, 最短路径中, 到i+1层然后下楼到i层只有一种情况, 即先坐电梯到i+1层然后走下来
查看原帖
点赞 1
相关推荐
牛客热帖
更多
正在热议
更多
# 一张图晒出你司的标语 #
4378次浏览 77人参与
# AI面会问哪些问题? #
28219次浏览 565人参与
# 米连集团26产品管培生项目 #
13395次浏览 285人参与
# 你的实习产出是真实的还是包装的? #
20378次浏览 343人参与
# 找AI工作可以去哪些公司? #
9351次浏览 247人参与
# 春招至今,你的战绩如何? #
66175次浏览 584人参与
# 厦门银行科技岗值不值得投 #
8099次浏览 188人参与
# 从事AI岗需要掌握哪些技术栈? #
9172次浏览 321人参与
# 中国电信笔试 #
32068次浏览 295人参与
# 你做过最难的笔试是哪家公司 #
34279次浏览 245人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
340947次浏览 2175人参与
# 哪些公司真双非友好? #
69694次浏览 289人参与
# 阿里笔试 #
179001次浏览 1318人参与
# 机械人避雷的岗位/公司 #
62708次浏览 393人参与
# 小马智行求职进展汇总 #
25139次浏览 80人参与
# 第一份工作一定要去大厂吗 #
14875次浏览 122人参与
# 金三银四,你的春招进行到哪个阶段了? #
22226次浏览 284人参与
# 担心入职之后被发现很菜怎么办 #
291382次浏览 1210人参与
# 为了减少AI幻觉,你注入过哪些设定? #
26274次浏览 310人参与
# 应届生第一份工资要多少合适 #
20694次浏览 86人参与
# HR最不可信的一句话是__ #
6346次浏览 114人参与
# 沪漂/北漂你觉得哪个更苦? #
10029次浏览 194人参与
查看16道真题和解析