给你两个相同的异常坚硬的鸡蛋, 通过在一栋100层楼的不同层扔下鸡蛋进行实验, 试验出不会摔碎该鸡蛋的最高楼层(即临界楼层). 已知未碎的鸡蛋可以重复使用. 那么最少的实验次数
首先我们明确一下题目隐含的规则:
- 如果鸡蛋在某一层没有碎,它不会在任何更低的楼层破碎.
- 如果鸡蛋在某一层碎了,它在更高层上一定会碎.
- 鸡蛋可能在一楼就碎了,也可能在最高层也不会被摔碎.
- 所有鸡蛋都是相同的.
- 如果鸡蛋没有摔碎可以继续使用.
面对这样一个问题,我们首先可能会想到二分法,也就是
第一步:在第五十层扔一个鸡蛋;
第二步:如果鸡蛋碎了, 则从第一层开始逐层实验; 否则在剩余楼层继续使用二分法,从七十五层扔一个鸡蛋.
显然最坏情况下使用这种策略需要实验50次.
50次显然太多了,但我们能从中看出来如果第一个蛋碎了,第二个蛋就变成了单蛋问题, 需要一层一层实验. 因此第一个蛋的作用便是缩小范围. 目前我们实验次数多的主要原因在于第二个鸡蛋需要实验的次数太多了, 如果我们能够利用第一个鸡蛋进一步缩小范围, 那么最后的实验次数就会有一个不错的值.
我们可以尝试将100平均分成10组, 用第一个鸡蛋在每组最后一层进行实验, 即
那么你能想到更好的办法减少实验次数吗?