问题描述:

有12枚硬币,其中有一枚是假币,但是不知道是重还是轻。现给定一架没有砝码的天枰,问至少需要多少次称量才能找到这枚硬币?如何证明给出的方案是最少次数?

思路分析:

我们首先想到的可能是将12枚硬币分成两堆,每堆6枚放到天枰上称量,这样的得到的结果一定是天枰是倾斜的。得不到任何其他信息,反而白白浪费了一次称量机会。因此第一次称量一定是选择一部分去称量,利用均分原理,天枰左边放一部分硬币,右边放一部分硬币,还剩下一部分硬币。从平均情况考虑,三部分中含有假币的概率是相等的。因此,第一次称量中,我们可以将12枚硬币分成3份,每份4枚硬币,记为甲、乙、丙

取甲、乙放到天枰上称量,一共会出现3种情况:

  • 平衡:说明甲乙中都不会含有假币,则假币一定在丙中,记丙中的4枚硬币为A、B、C、D。(依然不能将4枚硬币分成2份!无意义!!)取A、B放到天枰上称量,则又会出现三种不同情况:

    • AB平衡:AB不可能为假币,一定在C、D中。

      • 取C与A量,若平衡,说明D是假币;若不平衡,说明C是假币。
    • A重/B重:A为假或B为假。取甲中任意一枚(真币)与A称量。若平说明B为假币,且假币轻;若依然A重,说明A为假币且假币重;
  • 左倾:说明假币在甲或乙中。分别记甲中四枚硬币为ABCD,乙中四枚硬币为EFGH,丙中四枚硬币为IJKL(都是真币)。取ABE和CDI称量,则会出现
    • 若ABE与CDI平衡,则说明他们都是真币。FGH为假币且假币轻。取FG称量:

      • 若平衡,说明H为假币;
      • 否则FG中谁轻谁是假币。
    • 若左倾(即ABE重,CDI轻)。第一次称时,ABCD>EFGH。所以假币在AB中,且假币重;
      • A与I在称量一次,若平则B是假币,若A重,则A是假币。
    • 若右倾(即ABE轻,CDI重)。第一次称时,ABCD>EFGH。所以假币在CD中,且假币重;
      • C与I再称量一次,若平则D是假币,若C重,则C是假币。
  • 右倾:(与左倾情况完全对称)

通过上面的分析可知,无论什么情况,3次称量就可以得出哪个是假币。

理论分析:

  • 一次天枰称量能够得到左倾、右倾、平衡3种情况,如果把一次称量当做是一次编码,则它是3进制编码才能够表示;
  • 我们想要用3进制编码表示的是:12枚硬币,且假币的轻重未知。
    • 每枚硬币都可能是假币,共12种情况,假币有可能比真币轻,也有可能重,共12*2=24种情况;
    • 3n>=24 则n至少为3才可以。
  • 所以从信息论的角度讲,3次称量是最小值。

转载于:https://www.cnblogs.com/little-YTMM/p/5455072.html

有趣的天平秤假币问题相关推荐

  1. Github上有趣的100个python项目

    Github上面有很多有趣的python项目,包括软件.库.教程.资源等.这次收集了其中比较受欢迎的100个,供大家参考. 资料来源:https://github.com/521xueweihan/H ...

  2. 力所能及的做些自己喜欢和有趣的事

    我们每个人都有自己喜欢做的事:在自己可控且力所能及的情况下,在闲时,按自己的意愿去做些自己喜欢和有趣的事,会感觉到这事很有意义.在忙时,要为理想和奋斗而忙:不浪费时间在无意义的事和人身上. 朋友要的是 ...

  3. 10玩rust_有趣的 Rust 类型系统: Trait

    也许你已经学习了标准库提供的 String 类型,这是一个 UTF-8 编码的可增长字符串.该类型的结构为: pub struct String {vec: Vec<u8>, } UTF- ...

  4. 有趣的计算机课的作文,有趣的电脑课作文500字

    昨天,我们上了一堂有趣的电脑课. 刚一踏进电脑室,我们便发现讲台旁放着一箱耳机,这些耳机上都缠绕着长长的耳机线.这节课我们会学习什么新知识呢?我怀着好奇心,坐在了座位上. 这时,上课铃响了.老师走到讲 ...

  5. 人工智能和机器学习领域有哪些有趣的开源项目

    人工智能和机器学习领域有哪些有趣的开源项目? 投递人 itwriter 发布于 2014-12-02 11:21 评论(0) 有20人阅读  原文链接  [收藏]  « 本文简要介绍了 10 款   ...

  6. C++拾趣——有趣的操作符重载

    操作符重载是C++语言中一个非常有用的特性.它可以让我们比较优雅的简化代码,从而更加方便的编写逻辑. 为什么要使用操作符重载 一种常见的用法是重载<<运算符,让标准输出可以输出自定义的类型 ...

  7. 简单有趣的matlab小程序_超实用有趣的五个小程序推荐

    大家好,我是小胖. 废话不多说,进入正题. 1.一周CP共读 有趣的灵魂总会相遇. 一个极简的社交小程序. 通过选择自己喜欢的一本书,匹配到那个跟自己有着一样有趣灵魂的TA. 选择好要阅读哪本书之后, ...

  8. 一些有趣的题目(java)持续更新

    有趣的编程题 1.面试题 2.某公司面试题 1.面试题 此处为正确的代码 package Java.king01.Test;class MicrosoftTest {public static voi ...

  9. 比较有趣的一个笔试题目

    这2天忙于找工作,看.NET笔试题目的时,发现有些笔试题目还是比较有趣的,虽然考的都是基础,但是稍有不慎还是会进入圈套.以下面一个题目为例,听说是晕倒了一群人 - -     class Progra ...

最新文章

  1. Python学习笔记.OS学习笔记 OS操作系统(operating system)(二)程序和进程 输出进程号,工作目录最有用!
  2. wmi接口如何通过Win32_Volume类修改盘符
  3. numpy学习笔记(莫烦python)
  4. 关于level_idc和Profile_IDC的解释
  5. 在WebGL场景中进行棋盘操作的实验
  6. 论文浅尝 | 异构图 Transformer
  7. tomcat7下配置session复制和nginx做负载均衡
  8. Unity3D基础36:场景自适应与场景切换
  9. 一个有情怀的PPT模板下载网站
  10. 赚了20亿美元GandCrab勒索病毒家族的故事
  11. Unity 资源断舍离(资源清理重复以及引用被引用查找)
  12. Linux编程之ICMP洪水攻击
  13. Crazy Mother
  14. WiFi_combo模组功耗数据
  15. vip163邮箱手机版登陆入口是哪个?vip邮箱163实用技巧
  16. java word转二进制_DWORD WORD到INT的转换
  17. Snippets 使用
  18. 如何清除ug服务器注册码,UG许可证删除不掉的解决方法
  19. 【XLA】一、【构图阶段】图优化器的注册和执行
  20. 您的代码听起来如何?根据您的代码生成音乐

热门文章

  1. 算法:输入一个链表,输出该链表中倒数第k个结点。
  2. python读取excel
  3. WEB在线预览PDF
  4. Underscore.js (1.7.0)-函数预览
  5. NTFS文件系统的简述
  6. windows下apache+php+mysql 环境配置方法
  7. PowerDesigner 把Comment写到name中 和把name写到Comment中 pd7以后版本可用
  8. PostgreSQL的 initdb 源代码分析之二十一
  9. uwsgi搭配nginx
  10. PostgreSQL 入门