- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这个问题来自“Elements of Programming Interviews”,困扰了我几天。
问题是,“给定 c 个案例和 D 个允许跌落,在最坏的情况下,您可以测试的最大楼层数是多少”?
假设如下:
1) 所有案例都具有相同的属性,如果一个案例突破了一个水平,那么所有其他案例也会如此
2) 跌落后幸存的箱子可以再次使用,但破损的箱子将被丢弃
3) 如果一个箱子在掉落时坏了,那么如果它从更高的楼层掉下来也会坏掉。如果它幸存下来,它会在更短的坠落中幸存下来。
对我来说,这个问题似乎是“广义的两个鸡蛋问题”的变体,在这个问题中您要尽量减少掉落的次数。 此问题改为在给定确定的掉落次数的情况下寻求最大化楼层数。
解中给出的递归关系如下:
F(c + 1, d) = F(c, d - 1) + 1 + F(c + 1, d - 1)
其中 F(c, d) = max # floors 我们可以测试 w/c 个案例和 d 个下降。这种递归关系让我感到困惑,尽管这本书解释说右边的术语是我们继续进行的楼层,以防在 F(c, d - 1) + 1 楼层测试时案例没有中断。我的困惑是 -什么情况下会破裂?这不会出现在递归关系中。
这个问题还提出了额外的问题——用 O(c) 空间解决同样的问题。实现上述递归关系自然会呈现为使用 2D 内存矩阵的动态规划。您将如何使用一维数组执行此操作?
最佳答案
How would you do this with 1D array?
1.将函数重写为:F(c, d) = F(c - 1, d - 1) + 1 + F(c, d - 1)
2.这样写代码:
for (i=1; i<=D; i++)
for (j=C; j>=0; j--)
a[j] = a[j-1] + a[j] + 1
解释:
a[j](after assignment, a[j] equals F(c, d))
= a[j-1](F(c-1, d-1)) + a[j](F(c, d-1)) + 1
My confusion is - what accounts for when case does break?
在 x 层测试一个案例:
1 + F(c + 1, d - 1)
)。F(c, d - 1)
)关于algorithm - 给定 C 案例和 D 允许跌落,您可以测试的最大楼层数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37468981/
我有一些地址数据需要解析。除楼层数据外,大多数地址信息都以适合我的方式提供。 对于以不同方式获取的楼层数据,我可能会得到以下格式: “大街 123 号 2 楼”或“大街 123 号 2 楼” 如果我使
我正在使用processing java 库使用牛顿物理学模拟球在两堵墙之间弹跳;水平速度是一个常数,因为没有加速度。我让模拟正常工作,但我想指定地板的高度。然而,在我的方程中,当我尝试在球距离屏幕底
我正在尝试在我的苹果应用程序中显示楼层。我知道在苹果 map 中有一些选定的地方,如机场或购物中心,可以看到这个楼层。我需要做到这一点。只需要显示可用的楼层。正如你在图片中看到的,在图像的右侧有5F,
我是一名优秀的程序员,十分优秀!