100层楼,2个鸡蛋,最少要几次才能测试出鸡蛋能承受的最大楼层?

这是一个关于用有限数量的鸡蛋在多层楼上进行实验,找出鸡蛋能承受的最大楼层的数学问题。文章通过递推算法探讨了如何优化策略,减少试验次数,包括1个蛋和2个蛋的情况,并推广到N个蛋和M层楼的场景。还介绍了代码实现和一些测试数据,揭示了当蛋的数量无限时,最佳策略类似二分查找,最少试验次数接近log N。
摘要由CSDN通过智能技术生成

1.扔鸡蛋实验

有一栋100层的楼,和2个坚硬的鸡蛋,从楼上扔下鸡蛋,鸡蛋会在大于某一层刚好开始碎,那最少几次能测出鸡蛋能承受的最大楼层呢?
如果从第50层扔下鸡蛋没碎,第51层扔下碎了,那鸡蛋能承受的最大楼层就是50。
注意:你手上只有2个鸡蛋,如果扔下碎了,就没法再使用了。

小明条件反射般作答,从1层开始往上测试,到第i层碎掉就有结果了。

小K说,这个方法确实可以测出来,但太慢了(当然暂不考虑下楼捡蛋的时间啦)。如果100层碎,最坏你得测试100次。如果先从第50层扔下呢?
这样分2种情况,碎和不碎:

  • 碎:则还有1个蛋,再从1层开始逐层往上测试,最坏测到49层,总共50次。

  • 不碎:则还有2个蛋,再从51层开始逐层往上测试,最坏测到100层,总共51次。

小明说,这个方法确实好一些,等等,你刚才说第2种情况是什么?

小明接着说,你还有2个蛋啊,兄弟,为啥不充分利用呢?
不考虑1-50层,可以把

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值