目录
问题描述
y个球,其中一个比较轻,用一个天平,最少多少次可以找到这个轻的球。
这道题的主要思路是一种分治的思想,说白了是每次把剩下的球分成三组,其中至少两组的球个数是相同的,而剩下那组的球的个数小于等于前两组个数。
例子
比如y = 20的时候。
分成三组 7 7 6,
前两组球个数相同都是7,第三组个数小于前两组是6
这时用天平秤个数相同的前两组球,有两种情况:
1:两组重量相同
这个时候可以判定,轻球一定不在前两组,即轻球在第三组。
第三组有6个球,可以分成3组,刚好是 2 2 2,每组两个球。
这时候再用天平秤前两组,又分成两种情况:
1:两组重量相同
可以判断轻球一定在第三组,
第三组有两个球,再用天平秤一次即可找到轻球。
故这种情况一共3次。
2:两组重量不同
则轻球一定在比较轻的那一组中,
这个组有2个球,再秤一次即可找到轻球。
故这种情况一共3次。
2:两组重量不同
则轻球一定在较轻的那一组中,这组有7个球。
可以分成3组,即 3 3 1。
这时候再用天平秤前两组,又分成两种情况:
1:两组重量相同
不同说了,轻球就是剩下的那个球。
这种情况一共称了两次。(这是个意外,居然两次就秤出来了)
2:两组重量不同
则轻球一定在较轻的一组,这组有3个球。
分成3组,即1 1 1。
用天平秤前两组,如果重量相同,则轻球就是第三组那个。
如果重量不同,则轻球就是比较轻的那个。
这种情况一共称了3次。
天平秤球问题其实有一个经验公式在:
即最少次数等于以3为底y的对数,再向上取整,比如log3(20)取整就是3次。