1
70
您可以很容易地为N层和M类cats的一般情况编写一个小的dp(动态编程)。
主要公式,
与谷歌的结果一致 萨克萨 (100,2)的链接。
如果你保存得最好,你可以很容易地找到策略(如何扔第一只猫)
还有一个更快的解决方案,不涉及O(n^3)计算,但我已经有点困了。
编辑
|
2
92
根据 a recent episode of Radiolab (about "Falling") 一只猫在9楼达到了极限速度。在那之后,它会放松并且不太可能受伤。从30岁以上摔下来的猫完全没有受伤。最危险的楼层是5楼到9楼。 |
4
8
我第一次在史蒂文·斯基纳的书里读到这个问题 算法设计手册 (练习8.15)。它遵循了关于动态编程的一章,但是 你不需要知道动态编程来证明策略的精确界限。 . 首先是问题陈述,然后是下面的解决方案。
只有1个鸡蛋从第一层开始将鸡蛋从每一层掉落,将发现关键层(最坏情况下)n次操作。 没有更快的算法。在任何算法中的任何时候,都要让g成为鸡蛋被视为不会破裂的最高楼层。算法必须在任何更高楼层H>G+1之前测试楼层G+1,否则如果鸡蛋从楼层H破裂,它就无法区分F=G+1和F=H。 2个鸡蛋
首先,让我们考虑k=2个鸡蛋的情况,当n=r*2是一个完美的正方形。这是一个需要O(sqrt(n))时间的策略。先将第一个鸡蛋以R层为增量滴下。当第一个鸡蛋破裂时,比如在地板上
当n不是一个完美的正方形时,取r=
证明任何算法至少需要sqrt(n)时间。假设有一个更快的算法。考虑它从哪个楼层落下第一个鸡蛋(只要它不破裂)。因为它的下降量小于sqrt(n),所以必须有一个至少为n/sqrt(n)的间隔,即sqrt(n)。当f在这个区间内时,算法必须用第二个蛋来研究它,并且必须一个接一个地调用1个蛋的情况。矛盾。 K蛋提出的两个鸡蛋的算法可以很容易地扩展到K鸡蛋。以固定间隔投下每个鸡蛋,这应被视为n的第k根的幂次。例如,对于n=1000和k=3,用第一个鸡蛋搜索100层的间隔,用第二个鸡蛋搜索10层,用最后一个鸡蛋搜索1层。
同样,我们可以证明没有一种算法更快
精确解我们通过优化第一个鸡蛋落在哪里(地板G)来推断复发,假设我们知道较小参数的最优解。如果鸡蛋破了,我们就在下面的G-1层用K-1鸡蛋探索。如果卵存活下来,我们在上面的N-G层用K卵探索。魔鬼为我们选择最坏的。因此,对于K>1来说,
|
5
2
这不是假设你在用“同一只猫”吗? 你可以用数学的方法来处理它,但这是关于数学的好事情…在正确的假设下,0可以等于1(对于0的大值)。 从实际出发,你可以得到“相似的猫”,但你不能得到“相同的猫”。 你可以试着根据经验来确定答案,但我认为有足够的统计差异,答案在统计上毫无意义。 你可以试着用“同一只猫”,但那是行不通的,因为在第一次下降后,它不再是同一只猫了。(同样地,一个人不能两次踏入同一条河) 或者,你可以汇总猫的健康状况,每隔一段非常近的时间采样,然后找到猫“大部分活着”的高度(而不是“公主新娘”的“大部分死去”)。平均来说,这些猫会活下来(直到最后一次休息)。 我想我已经偏离了最初的意图,但是如果你走的是经验路线,我会投票决定从尽可能高的地方开始,并随着高度的降低继续把猫扔下去,直到它们统计上存活下来。然后再对活着的猫进行测试。 |
6
0
我用了一种稍有不同的方法来产生一种溶液。 我首先计算出可以覆盖的最大楼层 X 猫和 Y 使用以下方法进行猜测。
从1楼开始,不断增加猜测次数,同时跟踪检查的楼层,猜测检查了哪些楼层,每层还有多少只猫。
这个 非常 计算给定答案的效率低下的代码,但对少数猫/地板仍然有用。 Python代码:
对于2只猫,可以通过x猜测确定的最大楼层是:
3只猫:
4只猫:
经过广泛的研究(主要涉及将数字序列输入 OEIS )我注意到最大楼层 X 遵循一个 combination 分段模式。
2只猫:
3只猫:
4只猫:
从这里开始,我采取了简单递增n的简单方法,直到我通过所需的楼层数。 Python代码:
这给出了(100,2)=14的正确解。
这在O(n)中运行,其中n是问题的答案(猫越多越好)。
|
7
0
|
8
-1
我不能在上面阅读谷歌的blogspot(多亏了Worksblogwall),但我不认为直接的二进制风格的搜索是最好的。原因是二进制搜索是基于这样一个概念,即您要查找的答案在列表中的任何索引索引处都有相同的机会。然而,在这种情况下,情况并非如此。在这种情况下,答案接近范围一端的概率比另一端更高。我不知道如何在搜索中考虑到这一点,但这是一个有趣的想法。 |
9
-1
所有这些关于猫的疯狂讨论……这只是一个用最小猜测(猫的数量)来猜测数字的问题。也不需要人为地(错误地)将无穷定义为解决方案的一部分。变量应该命名为上限或max try或类似的名称。 然而,问题的定义(猫的东西)有一些严重的问题,人们对动物残暴的潜能做出了反应,而且在现实生活中也存在这样一个问题的许多方面,例如空气阻力、重力是加速度,以及其他此类问题的现实生活参数。所以,也许应该以完全不同的方式提出这个问题。 |
John V · 是否存在单元测试无法发现的逻辑/流错误类型? 6 年前 |
Beefster · 为什么ANSI颜色转义以“m”而不是“]”结尾? 6 年前 |
Guillermo Gutiérrez · STR转换是如何工作的? 7 年前 |
RudziankoÅ · 合并排序数组算法 7 年前 |
user8852560 · 构造函数中的验证和构造函数冲突 7 年前 |
jav974 · 订购产品时寻找最佳价格组合的算法 7 年前 |
hippietrail · 确定浮点数中前导零的数量 7 年前 |