12个硬币(或弹珠)中有一个是假的,假设假币比真币轻。
有天平可以比较硬币(或弹珠)。
可以逐一进行比较并比较所有12个硬币。
更有效的方法是使用减少系数算法。将硬币堆分成两半,在天平上比较这两堆。
减少系数2的Big O为log2n。
还有更高效的减少系数3(log3n)算法,但我还没有找到它。
如果有人能解释它以及为什么它更有效,请告诉我。
1.) 两边重量 相同 :假硬币不能在称重的两个堆栈中,因此必须在第三个堆栈中:您将问题空间缩小了1/3
2.) 一侧比另一侧重:由于只有一个假硬币,它必须在重量较轻的那一侧:再次将问题空间缩小到1/3
反复洗涤。