@eve_compass老康信人也!这么快就出了正版,佩服。我也整理了一下自己的思路,冒昧发在这里,和你讨论也请你指正。
思路基于以下事实:
1、若干金币的集合,其整体轻重属性与其中特殊金币的轻重属性,在天平上的呈现形式一致。
这话怎么理解呢?通俗讲就是,一只老鼠一锅汤,老鼠什么味儿,汤就什么味儿。一枚金币为轻(重),那么和它一拨儿的金币也就集体呈现为轻(重)。
2、如果我们用天平称量过一次金币,那么在第二次称量的时候,与第一次相对照,被称量的金币事实上获得了某些有别于其他金币的附加属性,可以利用这些附加属性将金币细分为若干组。比如
保留组:天平两边没有挪窝儿的金币;
交换组:从左边挪到了右边,或者右边挪到了左边;
移除组:从天平上取下的金币,没有参与第二次称量。
3、如果已经知道特殊金币在天平上的呈现形式,并且能判定特殊金币为某三枚金币(包括两枚)其中之一,那么只需天平称一次,就能确定该特殊金币。
这个应该不难理解。天平两头各一枚金币,如果不平衡,那么比对一下已经知道的特殊金币呈现形式,相一致的就是要找的目标;如果平衡,那么没上天平称的那个就是目标。
这一判定过程因为需要多次调用,我们不妨将其理解为一段子程序,并命名为“三枚金币称一次,即可确定目标”。
基于以上事实采取如下步骤:(9-13枚金币均适用)
第一步、天平两端各放4枚金币;
在这一步我们的目的是建立某种呈现形式,从而为以后的判断提供一个基本盘,特殊金币或轻或重、不轻不重、亦轻亦重并不影响,有点儿像姓薛的那只猫。
那么为什么是各4枚金币,而不是5枚或者3枚呢?因为我们接下来要对放上天平的金币按照“保留”“交换”“移除”的属性进行细分,并且调用“三枚金币称一次,即可确定目标”这个子程序,如果是两端各5枚金币的话,其中9枚可细分,另外1枚就无处可去了……如果是两端各3枚金币的话,那么会导致较多金币在第一次称量的时候没有得到上天平呈现的机会,这在金币总数较少比如9的时候影响不大,但在金币总数较多比如13的时候则会导致任务失败。
这一步如果天平平衡,那么后续判断相对简单,后文结合实例了解一下即可。为了叙述的连贯性,在此我们设定天平呈现不平衡状态。
第二步、移除2枚金币,天平两头保留2+1枚金币,交换剩余的1+2枚金币;
如果天平保持此前的不平衡状态,可判定特殊金币在“保留”组;
如果天平此前的不平衡状态逆转,可判定特殊金币在“交换”组;
如果天平由不平衡状态转为平衡,可判定特殊金币在“移除”组。
第三步、调用子程序。