进击的Python工具癖程序员

两个玻璃球 测试极限高度

2018-01-10  本文已影响524人  zhaoolee

一道有趣的智力题目:

已知,玻璃球从某高楼落到地面会摔碎,楼的最大高度为100层,给你两个玻璃球,请你最快的测出,能使玻璃球摔碎的最低楼层...


两个玻璃球

思路1:蛮力法

如果用蛮力法, 从1楼,2楼,3楼,一层一层,抛球测试,肯定能测出最低楼层,但效率太低...

思路2: 二分法

用经典的二分法,第一个球可能在50层掉了坏掉,第二个球在25层坏掉,然后损失了所有的球,也没有得出最后的答案...

小启示:

我们使用显微镜的时候,会先使用低倍镜粗调让被观察的物体进入视野,然后使用高倍镜精细调整,让被观察的物体在视野内变清晰...

比较靠谱的做法:

我们可以把两个小球当做高倍镜和低倍镜, 先使用第一个小球(相当于低倍境),以每次10层的跨度,依次抛到地面,观察结果, 10层, 20层, 30层, 40层...., 如果在50层抛出的时候,第一颗小球摔破了,则说明玻璃球的极限高度在40层到50层之间, 再使用第二颗小球(相当于物镜), 从41层,42层,43层... ,依次抛出,如果第二颗小球在第43层摔破,则43层为小球摔破的极限高度!

据说google曾用上面的题目,作为面试题, 来考验面试者的工程思维!

上一篇下一篇

猜你喜欢

热点阅读