双蛋问题
题目信息
来源于微软、谷歌面试题。
有一个大楼,有100层高。有一个鸡蛋,在低楼层往下扔,到地下都不会碎,在高楼层往下扔,鸡蛋会碎。碎了之后就无法再往下扔了。
你有N个鸡蛋可以做实验,最少扔多少次,能够找到临界楼层,楼层以上鸡蛋破碎,楼层以下鸡蛋不会碎。
分类讨论
- 只有1个蛋,N=1,最少扔M次,能够确定出临界楼层?
- 不可能一上来就从50层开始,因为一旦碎了,就只知道临界楼层位于1-50之间。
- 先从第一层扔,如果没碎,就从第二层扔,否则临界楼层就是第一层。
- 最差的情况下,要扔100次,即M=100。
- 有无限多个蛋,N=∞此时要使用二分法。二分法是牛顿提出来的,最早是用来求解方程的根。
直到间隔小于1,就不用继续尝试了。