12金币找假
本文最后更新于:2024年3月21日 中午
问题引入
题目
现在有
现有12枚外观一致的金币,其中有一枚假币。试问能否利用无砝码天平只称量三次就找到这枚假币?(注:真币假币孰轻孰重未知,天平左右轻重信息可知。)
原题
12球里有一个坏的,轻重未知,请问,最少称几次,能把它挑出来且知道轻重。
简化题目
8中1重
在解决12枚金币之前,我们先来看看“8枚金币中有一枚重假币”是怎么解决。看完之后,再看12枚金币,可能会有所帮助。
flowchart TB
st([为8枚金币以1到8编号])---c1{234vs678}
c1---|平衡|m1(15有假)
c1---|不平衡|m2(由倾斜情况知假币在哪一侧\n这里假设是234更重)
m1---c21{1vs5}
m2---c22{2vs3}
c21---|必不平衡|m11(重的是假币)
c22---|平衡|m21(4为假币)
c22---|不平衡|m22(重的是假币)
12中1重
现在,将简化题目再升级一下,变成12枚金币,但仍然已知其中有一枚重假币。解题思路就是将12枚分为甲乙丙三组,每组4枚。不妨令甲乙两组比较。若平衡,则丙组有假,至多两次称量即可锁定假币;若不平衡,则变为上面的8金币问题。
原题解
不知在看过简化题目后,是否对你有所启发。其实就是确定真币,但下一次称量时,真币不会全放在一侧,避免信息冗余。
首先声明:解法不唯一!主要是为解题思想提供一个实例,所以按以下编号称量便于理解。
将12枚金币以16进制分别编号为 1、2、3、4、5、6、7、8、9、A、B、C 。
因为只有一枚假币,且假币重量和真币不一样,所以如果天平平衡,则两边一定都是真币;如果不平衡,则假币一定在其中一边,且另一边都是真币。但仅看本次称量,无法得知哪一侧为真,哪一侧为假(因为假币轻重未知)。因此需要记录前几次称量的具体结果。
以下称量结果以平衡和不平衡两种情况作为分支,有些情况可以直接下结论,但大部分情况还需根据每次称量结果左沉右沉来判断。
flowchart TB
st([为12枚金币从1到C以16进制编号])---c1{1234vs5678}
c1{1234vs5678}-->|平衡|m11(1-8是真币)
c1{1234vs5678}-->|不平衡|m12(9ABC是真币)
m11---c21{19ABvs2345}
m12---c22{19ABvs2345}
c21{19ABvs2345}--->|平衡|m21(C是假币)
c21{19ABvs2345}--->|不平衡|m22(9AB有假,知假币轻/重)
c22{19ABvs2345}--->|平衡|m23(678有假,代入第一次称量\n知假币轻/重)
c22{19ABvs2345}--->|不平衡|m24(1-5有假)
m22---c31{137Avs269C}
m23---c32{137Avs269C}
m24---c33{137Avs269C}
c31-->|平衡|m31(B是假币)
c31-->|不平衡|m32(由轻重知假币)
c32-->|平衡|m33(8是假币)
c32-->|不平衡|m34(由轻重知假币)
c33-->|平衡|m35(45有假\n先代入第二次称量知假币轻/重\n再代入第一次称量知假币)
c33-->|不平衡|m36(123有假\n先带入第一次称量知假币轻/重\n再根据第二三次称量知假币)
从左到右,最右边一条支线相对难想一点。三次称量首先可得假币存在与1、2、3中。此时先带入第一次称量知假币轻/重。以假币偏重为例,第一次称量结果应当左沉。根据第二次称量结果,若是左沉,则说明1就是假币;如若右沉,则假币在2、3之间,还需根据第三次称量结果判断哪个是假币。假币偏轻也是同理,此不再赘述。
参考
知乎高赞回答:十二个乒乓球特征相同,其中只有一个重量异常,如何用一部没有砝码的天平称三次,将重量异常的球找出来? - 知乎 (zhihu.com)