这是Robert Sedgewick的算法第4版的练习题1.4.24。
Suppose that you have an N-story building and plenty of eggs. Suppose also that
an egg is broken if it is thrown off floor F or higher, and unhurt otherwise.
First, devise a strategy to determine the value of F such that the number of
broken eggs is ~lgN when using ~lgN throws, then find a way to reduce the cost to
~2lgF.
虽然lgN
解决方案很容易想到,但我完全不知道2lgF
解决方案。无论如何,我们没有给出F
的值,那么2lgF
解决方案的基础是什么?
任何人都可以对这个问题有所了解吗?感谢。
答案 0 :(得分:18)
logN:从顶部开始,始终将搜索空间减半 - >二元搜索
2 * logF从1开始,接下来的2,4,8(即2 ^ i),一旦蛋中断(在日志F步骤之后)在较小的搜索空间中进行二分搜索(范围
答案 1 :(得分:5)
lg(F)
解决方案是1, 2, 4, 8, ...
,直到第一个鸡蛋在2^(k+1)
处中断,然后在2^K
到2^(k+1)
范围内进行二元搜索。
另一种方法是执行相同的过程,直到第一个鸡蛋在2^(k+1)
处断裂然后重新开始,除了将2^k
添加到每个高度:2^k + 1, 2^k + 2, 2^k + 4, 2^k + 8, ...
。您可以继续重复此过程,以减少指数搜索范围的大小。