algorithm - 分治算法在O(logn)中找到假币-LMLPHP
你好!!我试图找到解决此问题的信息和示例,但找不到。这是我准备考试的问题,不是作业。有人能解释一下解决这个问题的步骤吗?还有,有没有类似的相关例子?干杯!!

最佳答案

我将以(log2(n)+1)步骤给出解决方案+1是要找出重还是轻如果你知道那部分,它将采取2(n)个步骤。
分成两堆比方说,A和B。把它们互相称一称,你会发现A<B(读一下,A堆的重量比B堆的轻)拿一堆,比如说a,把零件分开称重如果它们的重量相等,你会得到两个事实:
假币在B里面
它比其他硬币重。
然后你继续用B堆(然后你的体重开始下降。)
否则:
假币在
它比其他硬币轻。
现在,假设一个装着假币然后,将a的两个分开的桩命名为+1,然后重复。
注:我用3^n硬币开始(几年前)解开了这个谜题它也需要相同数量的步骤,因为它的复杂性是(Log3(n)(+ 1))。我把它留作你下一个要解决的问题。
PPS:我把问题的第二部分留给你。自己申请。
提示:与A and B相同。

10-04 20:34