我只是在阅读两个鸡蛋问题:
两个鸡蛋问题
你会得到两个鸡蛋,并可以进入一座 100 层高的建筑。两个鸡蛋是一样的。目的是找出鸡蛋从该楼层的窗户掉出时不会破裂的最高楼层。如果一个鸡蛋掉下来并且没有破裂,它就完好无损,可以再次掉下。然而,一旦一个鸡蛋被打破,那就是那个鸡蛋。
如果一个鸡蛋从地板上掉下来
n
就碎了,那么它也会从上面的任何地板上碎掉。如果一个鸡蛋在坠落中幸存下来,那么它会在任何比这更短的坠落中幸存下来。问题是:你应该采取什么策略来最小化找到解决方案所需的鸡蛋滴数?. (最坏的情况是什么?)
我一直跟着,直到“看,我可以做三个”部分。作者指出,在第一个鸡蛋破裂后,它会退化为 2-egg 问题,并且可以递归解决。
这很好,但是当使用 3 个鸡蛋而不是 2 个(第一个鸡蛋)时,我们不想选择更大的步长吗?我们从哪一层扔第一个鸡蛋?
有1个鸡蛋,我们必须从1楼开始。
有2个鸡蛋,我们求解n(n+1)/2=k
并四舍五入,哪里n
是起始楼层,k
是楼层数。
使用 3... 我无法想出一个公式。
再想一想,如果有 2 个鸡蛋,最大掉落数等于我们掉落第一个鸡蛋的楼层数。例如,有 2 个鸡蛋和 100 个楼层,解决方案是 14,这意味着我们从 14 层丢下第一个鸡蛋,如果它坏了,我们必须再丢 13 次,对于 1-13 层。
用 3 个鸡蛋,解决方案是 9(如图所示)。但是我们不想把第一个鸡蛋扔到第 9 层,我们可以把它扔得更高,因为我们不必在中间进行 1 秒的迭代。
如果我们再次从 14 楼扔出去,它坏了,那么我们就递归。n(n+1)/2=k
现在 13在哪里k
...但是这给了我们 4.815,如果我们 ceil 和那个并加上我们之前的下降,我们得到 6,这低于实际的解决方案,所以这里有问题...