微软的十二球问题

作者:Joey 分类: 记忆 发布于:2016-4-23 18:53 ė2674次浏览 60条评论

说此题是微软的面试题:

有十二球,其中有一个球与别的重量不同,或轻或重。给你一架没有砝码的天平,只能称三次,问如何找出那个与众不同得球。

标准解如下:
首先,均分为三组,称其中2组,产生2种结果:
A:产生较重一组(z),较轻一组(q)和4个标准球(b);
B: 产生8个标准球(b), 还有一个问题组(q);

对于A,
第二次称重只有一类方法(2种组合)可确保第三次得出结果,
G1(z1, b, b)和G2(q1, z2, z3), 而余下G3(q2, q3, q4, z4);
{注:另一种组合为G1(q1, b, b)和G2(z1, q2, q3), 而余下G3(z2, z3, z4, q4),但本质一样,只不过操作完全相反罢了}
将会产生如下三种情况:
A1: G1 > G2, 则第三次只需要将z1与b比较,若相等,则q1为问题球(轻了),否则z1为问题球(重了);
A2: G1 < G2, 则第三次只需要z2与z3比较,较重的那个为问题球(重了)
A3:G1 == G2, 则第三次比较方式为g1(q2, z4)与g2(q3, b)比较,若g1 == g2,则q4为问题球(轻了),若g1>g2, 则z4为问题球(重了),否则q3为问题球(轻了);

对于B,
第二次称重只有一种分组方法,
G1(p1, b)和G2(p2, p3),而余下p4
同样产生2个结果:
B1:G1 == G2, 则p4为问题球,第三次称重为p4和b比较得出p4是轻了还是重了
B2: G1 != G2,则第三次称重为p2和p3比较,其产生的结果只有如下解读:
若p2 == p3, 则p1为问题球,如第二次时G1 > G2, p1是重了,否则是轻了;
若p2 != p3, 则问题球一定不是p2就是p3,怎么判断哪个是呢?取决于G2和G1的比较,如果G2>G1,则问题球一定是重了的球,那么毫无疑问p2和p3中较重的那个就是问题球,否则就一定是个轻了的球,而且是p2和p3中较轻的那个。

如上,得解,且能最后知道这个问题球是轻了还是重了。

----------------------------------------------------------------------------------------------------------------------------------

--------------    经过的提示,我也觉得这个解法不太准确,又去查了一下,试试看下面的     --------------

----------------------------------------------------------------------------------------------------------------------------------

分三组A1A2A3A4 B1B2B3B4 C1C2C34
第一步比较第一组和第二组
    1.若A1A2A3A4=B1B2B3B4,问题球在C组里;
   第二步比较A1A2A3与C1C2C3
              若A1A2A3=C1C2C3,则问题球为C4,比较C4与其他任意一球的轻重.
              若A1A2A3>C1C2C3,则问题球在C1C2C3其中且为轻;
                  第三步比较C1C2:C1>C2,C2为问题球,C1<C2,C1为问题球,C1=C2,则C3为问题球;
            若A1A2A3<C1C2C3;判断方法和上面一样,问题球为重球。
    2.若A1A2A3A4>B1B2B3B4则
        第二步比较A1A2B1B2与A3B3C1C2 
若A1A2B1B2=A3B3C1C2,则A4为重或B4为轻,A4>A1则问题球为A4,A4=A1则问题球为B4;
             若A1A2B1B2<A3B3C1C2,则B1B2为轻球或A3为重球,第三步比较B1B2,哪个轻哪个就是问题球,
                               若一样重,则A3为问题球且为重球;
             若A1A2B1B2>A3B3C1C2,则A1A2中有一个重球或B3为轻;第三步比较A1A2,重的为问题球,
                               若一样重则B3为问题轻球。

本文出自 LcdBBS,转载时请注明出处及相应链接。

0

Ɣ回顶部