8球称重

直接引用的链接:5道谷歌公司的智力面试题

题目描述:

有8个球,其中1个比另外的要略重。在不用砝码的前提下,你最少要称几次,才能找出这个球?

尝试一:分成两份处理

这里球的个数指定为8。这个数字很特殊,是2的幂,因此一开始就会想到分成两份来处理:4和4。

那么首先肯定是判断重的球是在哪一份里,也就是比较这两份的重量。然后再在重的那一份中,判断具体是哪个球。

这样,问题就转换成了"4球称重",这显然需要至少两次比较的。

我们注意到,如果分成两份,那么第一步肯定是判断球在哪一份里,然后继续判断。

那么什么时候,至少需要两次称重呢?

观察:

设n为球的个数,只有当n为2或者3的时候,可以仅通过一次称重得到较重的球。否则至少需要两次称重。

n=2很好理解,n=3怎么称呢?

我们可以这样做,在3个球中随机选择2个进行称重。如果两球重量相同,那么答案肯定是没称的球;否则选重的那个就行了。

结论:8个球分成两份,至少需要3次称重。

尝试二:分成三份处理

这就是本题的官方题解了,通过以下步骤,就只需要两次称重。

  1. 一次称重就确定在哪一份里
  2. 第二次称重找出具体的重球

那怎么才能做到上面的步骤呢?需要满足以下条件:

  • 有两份的球的个数相同,并且每一份的个数不超过3
  • 第三份的球的个数不能超过三

那么我们的球的划分方案就确定了,分别是3、3、2。

具体操作流程如下:

称个数为3的两份球,确定重球在哪一份里面。如果第一次称重结果是相等,那么就在个数为2的那一份里继续比较。否则就在3个球中进行第二次称重。

 

posted @ 2021-12-15 16:48  yzer0  阅读(343)  评论(0)    收藏  举报