[英]Divide and conquer algorithm to find the counterfeit coin in O(logn)
我將以(log2(n)+ 1)個步驟給出解決方案。 +1
是查找是輕還是重。 如果您知道那部分,它將采取log2(n)的步驟。
分成兩堆。 假設A和B相互稱重,您會發現A<B
(讀取,樁A的重量A<B
重量)。 拿一堆,說A,分裂並稱重零件。 如果它們相等,您將得到兩個事實:
然后繼續進行B堆。(然后進行了+1
稱重。)
除此以外:
現在,說A裝有假幣。 然后,將A的兩個分開的樁命名為A and B
,然后重復。
PS:我用3 ^ n個硬幣解決了這個難題(幾年前)。 由於它的復雜度為(log3(n)(+1)),因此它也需要執行相同數量的步驟。 我將其留給您解決下一個問題。
PPS:我將問題的第二部分留給您。 自己應用Master's theorem
。
提示:與binary search
相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.