枚举--称假币

问题描述:赛利有 12 枚银币。其中有11 枚真币和1 枚假币。假币看起来和真币没有区别,但是重量不同。但赛利不知道假币比真币轻还是重。于是他向朋友借了一架天平。朋友希望赛利称三次就能找出假币并且确定假币是轻是重。例如:如果赛利用天平称两枚硬币,发现天平平衡,说明两枚都是真的。如果赛利用一枚真币与另一枚银币比较,发现它比真币轻或重,说明它是假币。经过精心安排每次的称量,赛利保证在称三次后确定假币。

解法描述

如果已知不标准的硬币是轻还是重,那么很简单,直接分3组,称第一二组确定出硬币在哪组,然后再组内对半称,最后再对半称。但此时不知是轻是重,这个方法不可行。

(1)、这里轻重未知,在每次称量时,应该尽量利用上次称量出的轻重关系。为了便于叙述,讲12个硬币标记为1、2、...12。先称量1+2+3+4和5+6+7+8:

如果相等,那么假币在9、10、11、12中。此时已知1~8是真币,可以作为标准来判断,那么使用1+10和2+12比较,如果相同则假币在9和11中,9和1称来判断假币是9还是11;否则用1和10来称一次判断假币是10还是12。

(2)、如果不等,假设1+2+3+4>5+6+7+8(反之类似),此时9、10、11、12是真币。那么将1、2、3去掉换成5、6、7,再在右边加上标准的9、10、11,形成5+6+7+4和9+10+11+8比较。

如果相等,假币只可能在1、2、3中,并且由第一次称量的结果,假币比真币重。从1、2、3中选择2个,若平衡,则剩余一个为假币,不平衡时重的那个是假币。

如果5+6+7+4<9+10+11+8,只可能因为轻的假币来到了左边。那么就在5、6、7中判断那个轻的假币,和上面类似。

如果5+6+7+4>9+10+11+8,5、6、7必然都不是假币,那么只用判断4和8哪个是假币。使用1枚真币和4称量即可判断。

  扩展一下,可以发现这个方法也能判断13枚的情况:先分成12枚和1枚,如果假币在12枚中,分析同上;如果假币是那分出来的1枚,上面第一种相等的情况每次都是相等,判断完三次就可得出结论:假币不在12枚中,只能是那额外的1枚。

解法参考:http://www.cnblogs.com/wuyuegb2312 

猜你喜欢

转载自blog.csdn.net/weixin_42289193/article/details/81565326