有一栋100层高的大楼,给你两个完全相同的玻璃球。假设从某一层开始,丢下玻璃球会摔碎。那么怎么利用手中的两个球,用什么最优策略知道这个临界的层是第几层???
2012年腾讯实习生笔试的时候,有一个智力题跟这个一样,只不过就是描述不一样而已。我记得大概是这样:1到100之间有一个数字,一个人猜,另外一个人给一些辅助信息,如果这个人猜的数比指定的数小,则会告诉他小了,如果比指定的数大了,则会告诉他比这个数大了,并且以后再猜的话,只会告诉对错,不告诉大了还是小了。
仔细想想,这两个题一样吧~~。下面我借助别人的分析我来仔细分析一下。
每次肯定是由低的楼层往高的楼层尝试,直到在楼层f(k),第一个球已经碎掉了,记录上一个尝试的楼层为f(k-1),在此楼层,玻璃球不会碎,所以接下来要尝试 f(k-1)+1,f(k-1)+2,f(k-3)+3, ....,知道有一个楼层碎了,这个楼层就是解啦,最坏的是到达f(k)-1 层。
以下分析转自