问题在于:
你有n个硬币,其中n = 2 ^ k为整数k,使得n - 2个硬币是相同的 重量和两个硬币比其他硬币重。两个较重的硬币可能具有相同的重量, 或者它们的重量可能不同。你有一个平衡秤:你可以放任意数量的硬币 在秤的每一侧一次,它会告诉你双方是否重量相同,或者如果它们的重量不同,哪一侧更轻。概述了使用O(log n)权重找到两个较重硬币的算法。
如果只有一枚硬币与其他硬币不同,我知道答案。我也发现类似的问题,不同的硬币已知更重。
Given n coins, some of which are heavier, find the number of heavy coins?
任何帮助。
答案 0 :(得分:2)
假设您将硬币分成两堆2个 k-1 硬币。
现在,为了证明称重次数。
假设我们从不使用"一个重型硬币解决方案",这种设置将在最坏的情况下进行两次称重,将搜索空间减少一半。因此,这里的称量数是2 log n
。
请注意,我们使用的是一个更重的硬币解决方案"最多两次。因此,松散的上限是2 log n
来自上述两个步骤,加上一个较重的硬币解决方案"的称重次数的2倍,这得到我们2 log n + 2 * O(log n)
,这是仍然是O(log n)
。