经典趣味题:称球问题

来源:互联网 发布:全国城市js代码 编辑:程序博客网 时间:2024/06/05 17:13

这是一道很老的题目了,但我直到最近才关注它,并对网上一些繁杂的解法表示头疼,通过对这些方法的总结,我得到了一种更一般化结论,这样,无论题是8球,12球,13球,甚至是39球,都可以套用该解法。希望我这个结论更易于理解。

 

这类问题的特点是:

坏球永远只有1个,但坏球是比好球轻,还是重,可能已知,也可能未知。

 

典型的问题:

有13个球,有一个坏球,其质量和其它球的质量不同,但不知道是比其它球轻了还是重了。给你一个天平,至多称3次,找到坏球?

 

暂不讨论上述问题,先看规模更小的问题,看看能不能抓到一些规律。

 

坏球轻重“已知”

只考虑“重”了的情况,轻了道理一样。

问题1:

3个球,有1 个坏球较重,请问需要称多少次找到坏球?

答:将3个球分3组(A, B, C)。称A,B组,若天平:

A=B,即天平持平,说明坏球是C。

A>B,即A比B重,说明坏球是A。

A<B,则坏球是B。

结论:只用称1次。

 

问题2:

扩展一下,如果允许称2次,那么最多能从多少球中挑出坏球(已知坏球较重)?

答:如果称一次能将坏球锁定到3个球之内,那么根据问题1的结论,问题就可解。于是,将N个球分3组(A, B, C),每组N/3个球,称A和B:

A=B,则坏球在C组。

A>B,则坏球在A组。

A<B,则坏球在B组。

只剩一次机会了,要使问题缩小到问题1,只要各组里的球数为3即可,即N=9。

结论:称2次,可从9球中挑出坏球。

 

至此,我们发现一个规律:多称一次,可解决的球数量将乘以3:

称3次,就能解决27球

...

结论:若坏球轻重”已知“,称N次,就能解决3^N球。

 

坏球轻重“未知”

信息量更少,解题过程要利用天平倾斜这一信息。

 

回到13球问题,第一步,同样分3组(A=4, B=4,C=5):

第一称:

称A与B。则:

A=B, 坏球在C组,问题缩小为:称2次解决5个球,还提供8个已知的好球。将5球分两组(C1=2球, C2=3球),将C2与3个好球称一次,可知:

天平平,则坏球在C1中,轻重未知,称1次解决2个未知球,得解。

天平不平,则坏球在C2中,且根据天平倾斜情况可知坏是轻了重了,问题退化为已讨论过的问题1,得解。

 

若A不等于B,假设A>B (A<B同理):坏球若在A中,则坏球重;若在B,则坏球轻。

现将A与B各分为2小组:

A(a1,a2), B(b1, b2),a1球数与b1相同;a2球数与b2相同。

这里我们先不规定小组a1 / b1, a2 / b2 球数各是多少,而是根据比较结果来反推应该如何分配球数,这是将解题过程一般化的核心。

把a2拿下来,b2换到a2的位置,而b2由C组相同球数补充,设为c2:

此时,天平的样子为:

天平左边:A2 (a1,b2)

天平右边:B2 (b1,c2)

天平外边:a2

 

第二称:

A2与B2比较,有三个结果,再结合一开始A>B这一信息:

case 1. A2=B2,则a2重

case 2. A2>B2,则a1重或b1轻

case 3. A2<B2,则b2轻

上述结论即是一般化的分组比较结果。

 

第三称:

至此,还有一次机会,应该如何分配a1/b1与a2/b2小组的球数,才能保证上述3种情况都只需要一次称量?

case 2的情况最复杂,因为不知道坏球是在a1中还是b1中,但是发现,它只和小组1的球数有关。

对case 1, case 3,只和小组2有关。利用“坏球轻重已知”问题的结论,只允许称1次的话,a2 / b2至多允许有3个球。

于是分组如下:

a1 / b1分1球,a2 / b2分3球

 

现在来解case 2:

只要确定坏球是a1还是b1即可,可将a1与一个好球称一次,即得解。

 

总结

上述的核心在第二称上的分组上,对原组各分2小组,但先不决定每小组的球数,而是根据称量结果,发现只有3种case,而case 1,case 3是“坏球已知轻重问题”,且只与小组2有关,利用结论,根据还剩余称量次数N,对该组(组2)分配3^N个球;而剩下的球分配给组1,即case 2,再解决case 2。

这里的case 2只有2个球,可一称就解决,如果球比较多,可继续用3分法,不断缩小问题规模。

 

扩展 - 39球称4次

上述题目13球称3次得解,有人扩展了该问题,也是3的倍数关系,则39球可称4次得解,套用上述分组方法,读者可自行思考。


用上述方法:

第一称:均分成3组,若A=B,则问题化为C组13球称3次,已有解。

第二称:若A>B(A<B道理一样),与13球同理,分小组,替换后衡量A2与B2,则:

case 1. A2=B2,则a2重。

case 2. A2>B2,则a1重或b1轻

case 3. A2<B2,则b2轻

 

还有2次机会,根据结论,对case 1, case 3,我们知道可以贪心分配9个球;则a1 / b1各4个球。


解case 2:

将a1 (1,2,3,4), b1(5,6,7,8)一共8个球分三组A, B, C:(1,2,3), (4,5),  (6,7,8).

称A和C:

A=C:说明坏球在B,要么是球4且重,要么是球5且轻,再称一次可解。

A>C:

则坏球在A,问题退化为结论1:3个球且已知坏球轻重,称一次可解。

A<C:

同理,坏球在C,且轻,称一次可解。

 

0 0
原创粉丝点击