本文主要是介绍12硬币中有一个不知道轻重的假币,用天平将它找出来,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题1:假设有8个硬币,里面有一个硬币是假币,并且知道它是重了还是轻了(假设是轻了),现在给你一个天平,要求用最小次数将这个硬币找出来.问题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是一个公司的面试题。目测估计是准备压力面,这是最简单的情况....
这篇关于12硬币中有一个不知道轻重的假币,用天平将它找出来的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!