12硬币中有一个不知道轻重的假币,用天平将它找出来

本文介绍了一种筛选假币的算法,通过三次称量从八个或十二个硬币中找出一个重量异常的假币,讨论了已知假币轻重与未知轻重两种情况下的解决方案。
    问题1:假设有8个硬币,里面有一个硬币是假币,并且知道它是重了还是轻了(假设是轻了),现在给你一个天平,要求用最小次数将这个硬币找出来.
     这时候可以用一种类似二分法的算法来找出这个假币.将左边4个和右边4个比较,因为知道硬币是轻了,所以很快就能确定那堆硬币里面有假币,这时候问题的规模由原来的8变成了4....然后对4个硬币也采用同样的办法...最终3次找出那个假硬币

问题2:问题1的升级版,这时候不再知道那个假币是重了还是轻了,并且这时候还是12个硬币规模

    对12个硬币进行分

   然后第一次称量:A堆和B堆

                                    如果A == B  那么 无疑假硬币无疑在C堆中   然后称量    9  +10   和 7  + 8 .如果相等能够确定假币在11 或者12 中,如果不相等可以确定在9或者10中,接下来一次机会怎么确定假币的方法 你们可以想到吧。。。好的,这种情况可以解决掉了

                                  然后到了假设A!=B的情况 ,毫无疑问,任何称量都可以看到哪一个堆是重了还是轻了,请记住这种情况,这是关键的关键(标记位***)。在A!=B情况下我们采取以下称量计划    (1) 第一次 1+2+6   和5+3+9  如果相等,那么说明假币无疑是在4  7 8 中,然后下一步我们称量7和8,如果7和8相等,那么说明假币是4,如果7和8不相等,你们还记得那个最关键的关键的(***)没有??7和8不相等,那么说明A中全部都是真的,并且我们曾经称量过A 和B得知过哪个重了,也就是意味着我们可以从曾经进行过的推算中猜测到哪个假币是重了还是轻了,那么如今你7和8不相等并且你推出了假币是重了还是轻了,是不是就知道假币是哪个了?

                                         (2)如果第一次1+2+6 和5+3 +9  不相等,这时候我们留意到参与称量的硬币9是真币,记住第二个关键的关键,我们在这次测量中交换了一个A堆的3和B堆的6硬币,(情况A)如果说因为这次交换导致了天平的平衡方向改变了,本来由大的变小的,小的变大了之类的,那么我们毫无疑问能够确定假币在3或者6之中,接下来最后一次如何在两个硬币中确定是哪个假币你们能想到吧?还有一个(情况B)如果说因为这次交换导致了天平的平衡方向改变了,本来由大的依然是大的,小的依然是小的之类的,这时候我们能够确定到假币是在1 2 5 中,你们注意到之前是否也分析过类似的?你们注意一下上面提到的关键的关进,也就是标记(***),就会知道如何类似的应用这个条件,去判断假币在哪个中了,,,,其实就是类似(1)的分析


问题3:8个硬币,不知道轻了还是重了,三次称量找出来。转换成问题2一样的问题


你们知道了吧,其实问题3就是问题2的一个子集,据说这个问题3是一个公司的面试题。目测估计是准备压力面,这是最简单的情况....




        

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值