【发布时间】:2012-04-27 23:24:52
【问题描述】:
这是问题描述:
假设我们想知道 N 层建筑中的哪些楼层可以安全地掉落鸡蛋,哪些楼层会导致鸡蛋在落地时破裂。我们做几个假设: 跌倒后幸存下来的鸡蛋可以再次使用。
- 必须丢弃破损的鸡蛋。
- 跌倒对所有鸡蛋的影响都是一样的。
- 如果鸡蛋在掉落时破裂,那么如果从更高的窗户掉落,它也会破裂。
- 如果一个鸡蛋在坠落中幸存下来,那么它会在较短的坠落中幸存下来。
- 不排除一楼窗户打碎鸡蛋,也不排除N楼窗户不打碎鸡蛋。
给定一栋 N 层的建筑物和 d 个鸡蛋的供应,找到最小化(在最坏的情况下)确定起床所需的实验下降次数的策略。
我已经看到并解决了 2 个鸡蛋的这个问题,其中 N=100 的答案是 14。 我试图使用 DP 从 wiki 理解通用解决方案,但无法理解他们想要做什么。请告诉他们如何到达 DP 以及它是如何工作的?
编辑:
在this文章中给出的可以用d滴和e鸡蛋测试的最高楼层的Recurrence如下:
f[d,e] = f[d-1,e] + f[d-1,e-1] + 1
循环很好,但我无法理解它是如何得出的?
这个解释对我来说不是很清楚......我只是希望有人用更清楚的语言向我解释这种复发。
【问题讨论】:
-
您是否缺少一些上下文? “他们”是谁?你说的维基是什么?
-
不查看您链接的文档,该递归表达式看起来与计算组合的方式惊人地相似。
-
Wiki 是维基百科页面en.wikipedia.org/wiki/Dynamic_programming#Egg_dropping_puzzle 上的谜题的解释,“他们”被用作网络上针对这个特定问题的资源的总称。
标签: algorithm puzzle dynamic-programming