8球称重
直接引用的链接:5道谷歌公司的智力面试题
题目描述:
有8个球,其中1个比另外的要略重。在不用砝码的前提下,你最少要称几次,才能找出这个球?
尝试一:分成两份处理
这里球的个数指定为8。这个数字很特殊,是2的幂,因此一开始就会想到分成两份来处理:4和4。
那么首先肯定是判断重的球是在哪一份里,也就是比较这两份的重量。然后再在重的那一份中,判断具体是哪个球。
这样,问题就转换成了"4球称重",这显然需要至少两次比较的。
我们注意到,如果分成两份,那么第一步肯定是判断球在哪一份里,然后继续判断。
那么什么时候,至少需要两次称重呢?
观察:
设n为球的个数,只有当n为2或者3的时候,可以仅通过一次称重得到较重的球。否则至少需要两次称重。
n=2很好理解,n=3怎么称呢?
我们可以这样做,在3个球中随机选择2个进行称重。如果两球重量相同,那么答案肯定是没称的球;否则选重的那个就行了。
结论:8个球分成两份,至少需要3次称重。
尝试二:分成三份处理
这就是本题的官方题解了,通过以下步骤,就只需要两次称重。
- 一次称重就确定在哪一份里
- 第二次称重找出具体的重球
那怎么才能做到上面的步骤呢?需要满足以下条件:
- 有两份的球的个数相同,并且每一份的个数不超过3
- 第三份的球的个数不能超过三
那么我们的球的划分方案就确定了,分别是3、3、2。
具体操作流程如下:
称个数为3的两份球,确定重球在哪一份里面。如果第一次称重结果是相等,那么就在个数为2的那一份里继续比较。否则就在3个球中进行第二次称重。

浙公网安备 33010602011771号