面试题-双蛋问题(动态规划)

肺炎疫情期间,在B站上看了李永乐老师关于双蛋问题的视频,刚好我最近写了一篇关于动态规划的文章,这里我们试着使用动态规划的思想简单分析下这个问题。

一、问题描述

有一座100层的楼,有一个鸡蛋,在低楼层的时候将鸡蛋扔下不会碎,但是高楼层扔下会碎。存在一个临界楼层从该楼层之上抛下来,鸡蛋一定会碎。现在有N个鸡蛋可以做检查(鸡蛋没碎可以重复使用,但是碎了就不能使用了),问最少几次(M)能够找到这个临界楼层。

二、尝试

1)假设N=1,为了确保鸡蛋不会碎,只能从第一层开始往上扔,直到鸡蛋碎了为止,最差M=100

2)假设鸡蛋有无限多,可以使用二分法来解决这个问题,即在第50层往下扔,如果鸡蛋碎了就在25层继续扔,如果没碎的话,在75层往下扔。依次类推,直到找到为止。2^M>=100,m约等于6.64

如果N=2的情况下,最好需要多少次才能试出M?

1)假设第一个鸡蛋每隔十层扔一次,10、20、30。。。100,等鸡蛋碎着之后从再从区间内开始尝试,如果在第100层碎了的话就是91-99,这样就可以试出临界楼层了。

临界楼层出现在100层碎掉的话最坏的情况就是先扔10次(100/10=10)然后在91、92、93.。。99层向下扔,M=10+9=19。临界楼层出现在10层碎掉的话最坏的情况就是先扔1次(10/10=1),然后在1、2、3。。。9层向下扔要10次,M=1+9=1

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值