• 经典智力题


    1 称药问题

        有10罐药,其中有一罐已经变质……已知正常的药每粒10g,变质的每粒9g,那么怎样只称一次就查出哪罐变质了?

    解:从10罐药中依次取1, 2, 3, 4, …, 10颗,如果药粒均为10g的话,取出的药总重是(1 + 2 + 3 + … + 10) * 10 = 550g,存在变质的话,质量小于550g,550g –称出的重量便是所属的罐子。

    PS:

    如果有多瓶药变质的话,又怎么才能找到变质的罐呢?

    解:那么用上方法就无法解了,例如少了10g的话,可能是2和8号罐子药变质了。

    在上方法中,1, 2, …, 10的编码不唯一,采用二进制编码1~10里取药,即分别取1, 2, 4, …, 512颗。如是总重量少了10g,10 = (1010),可以知道,是2号和4号罐里的药变质了。

    2 称球问题

        一共12个同样的小球,其中只有一个坏球重量与其它不一样(未知轻重),给你一个天平,最少几次能找出那个不同重量的球。

    解:3次;

    1、  将12个球编号1~12,均分为三组,取1~4,5~8天平称重;

    2、  平衡则坏球在9~12号球中;

    2.1 将9、10球称;

    2.2 相等则9, 11再称,相等则12坏,不等则11坏;

    2.3 不等则仍9, 11称,相等则10坏,不等则9坏;

    3、  不平衡,则坏球在1~8号中,不防设1~4重,5~8轻;

    4、  将1,5~7放一端,8~11放另一端,称重;

    4.1 相等,则2~4有一个太重;再称2和3即可;

    4.2 不相等,如果1,5~7重,则1太重或8太轻,取一正常球与1或8称即可;

    如果1,5~7轻,则5~7中有一个太轻,再称5和6即可。

    3 赛马问题

    有25匹马,速度都不同,但每匹马的速度都是定值。现在只有5条赛道,无法计时,即每赛一场最多只能知道5匹马的相对快慢。问最少赛几场可以找出25匹马中速度最快的前3名?

    解:7次

    1、  分5组,跑5次后能得到前五组排序好的马;

    2、  用5组的第1名赛名,可以得到当前第1名的马,第4、5名的马不可以争前3。第1名组的2、3名,第2名组的1、2名,第3名组的第1名,该5匹马为争第2、3名的候选;

    3、  上述5匹候选马赛跑便可得到2、3名。

    参考文档:

    1、  http://bj.aoshu.com/e/20080520/4b8bc901ea556.shtml

    2、 http://www.cnblogs.com/sparkwen/p/3151532.html

  • 相关阅读:
    徐汉彬:Web系统大规模并发——电商秒杀与抢购
    编程语言十一月份排行
    windows C 与 linux C区别?
    inux 下c/c++ 连接mysql数据库全过程-----已经通过验证
    MySql可视化工具MySQL Workbench使用教程
    C语言连接数据库
    C语言连接MySql数据库
    C语言位运算
    python-函数
    python2.x和python3.x共存
  • 原文地址:https://www.cnblogs.com/qiernonstop/p/3373044.html
Copyright © 2020-2023  润新知