你好 !!我试图找到解决此问题的信息和示例,但找不到。这是我的考试准备问题,而不是作业。有人可以解释解决此问题的步骤吗?而且,任何具有此类相关示例的资源?干杯!!
问问题
2272 次
1 回答
0
我将在 (log2(n) + 1) 步骤中给出解决方案。+1
就是看重还是轻。如果你知道那部分,它将采取 log2(n) 步骤。
分成2堆。比如说,A 和 B。将它们相互称重,你会发现A<B
(阅读,A 堆的重量小于 B 堆的重量)。拿一堆,比如说A,分开并称重。如果它们的重量相等,您会得到 2 个事实:
- 假币在 B
- 它比其他硬币重。
然后你继续 B 堆。(你的+1
称重了。)
否则:
- 假币在A
- 它比其他硬币轻。
现在,假设 A 包含假币。然后,将 A 的两个分开的堆命名为A and B
,然后重复。
PS:我用 3^n 个硬币解决了这个难题(几年前)。它也需要相同数量的步骤,因为它的复杂度是 (log3(n) (+1))。我会把它留作你的下一个问题来解决。
PPS:我会把问题的第二部分留给你。自己申请Master's theorem
。
提示:同binary search
。
于 2015-11-10T13:26:41.933 回答