• «
  • 1
  • 2
  • 3
  • »
  • Pages: 1/3     Go
东方花猪
级别: 网络英雄
精华主题: 0
发帖数量: 856 个
工控威望: 6585 点
下载积分: 12276 分
在线时间: 750(小时)
注册时间: 2009-12-17
最后登录: 2024-11-19
查看东方花猪的 主题 / 回贴
楼主  发表于: 2021-07-14 13:29
一道有意思的算法题,了解一下,对扩张思路有帮助。

问题描述:
有100个一模一样的瓶子,其中99瓶中装的是普通的水,一瓶是毒药,水和毒药只能通过老鼠来分辨,喝下毒药的老鼠会在一个星期后死亡(刚好一个星期)。现在你有一个星期时间,请问至少需要多少只老鼠才能确定出哪个瓶子装的是毒药?

我本来想的是用坐标的方式来确定哪一瓶是毒药:
1、摆成2x50,4x25,5x20,10x10的方阵
2、每行都放一只老鼠,然后让老鼠把这行水都喝一口
3、每列放一只老鼠,然后让老鼠把这列水都喝一口
4、一周后测试每一行和测试每一列的老鼠中都会有一只死亡,通过死亡的老鼠就可以判断毒药的坐标啦
5、需要的老鼠数量=方阵的长度+宽度
   所以10x10的方阵最合适,需要老鼠20只
6、后来又想了想,为什么不建一个三维的坐标系呢,经计算4x5x5的坐标系最合适,所需老鼠=4+5+5=14只

最后看了其他解题方式之后,了解到这是一个二级制问题,用七只老鼠即可解决
这个解体思路,非常巧妙。

我们知道2的10次放等于1024,那么通过把瓶子编成二进制,同时把老鼠变成二进制的位值就可以分辨到底哪瓶水是毒药

1.利用二进制来做,最少的老鼠数量就是计算2的多少次方大于等于瓶子数量,例如本题为7(2的7次方为128,大于100)。对100瓶进行二进制编码,这样可以排列出1xxxxxx,x1xxxxxx,...,xxxxxx1这样的七组序列。如第一瓶药水编码为0000001,第五瓶药水编码为0000101,第一百瓶药水的编码是1100100.

2.把老鼠分辨编成1-10号,分别对应二进制的第1位,第2位.....第10位

3.根据每瓶水的二进制代码给老鼠喝水,该位值为1就给该位值的老鼠喝,为0就不喝,比如,第一瓶药水编号为0000000001,就只给1号老鼠喝,第84瓶,编号是1010100 ,就给3号,5号,7号老鼠喝

4.1星期后,看哪些老鼠死了,然后死的老鼠位为1,没死的老鼠位为0,组成二进制数,该数对应的瓶子编号就是有毒的编号。
本帖最近评分记录:
  • 下载积分:+2(windstorm) 好贴好贴!
  • 下载积分:+5(bogegongkong) 感谢分享!
  • 拆二代
    荏苒几盈虚
    级别: 论坛先锋
    精华主题: 0
    发帖数量: 401 个
    工控威望: 1398 点
    下载积分: 4657 分
    在线时间: 126(小时)
    注册时间: 2019-05-09
    最后登录: 2024-10-01
    查看荏苒几盈虚的 主题 / 回贴
    1楼  发表于: 2021-07-14 13:54
    厉害了
    血滴子三号
    台金伺服电机/驱动器
    级别: 略有小成
    精华主题: 0
    发帖数量: 187 个
    工控威望: 223 点
    下载积分: 6572 分
    在线时间: 82(小时)
    注册时间: 2021-04-21
    最后登录: 2022-08-25
    查看血滴子三号的 主题 / 回贴
    2楼  发表于: 2021-07-14 14:42
    虽然觉得有道理。但对于现实来说,还是看预算……预算充足,还是100简易。
    珠海 台金 伺服电机/驱动器
    源头工厂制造企业
    13536588499(微信同号)
    菜鸟入行
    级别: 论坛先锋

    精华主题: 0
    发帖数量: 1381 个
    工控威望: 1557 点
    下载积分: 3686 分
    在线时间: 177(小时)
    注册时间: 2017-09-01
    最后登录: 2024-06-11
    查看菜鸟入行的 主题 / 回贴
    3楼  发表于: 2021-07-14 14:55
    可怜的小白鼠,横竖都是死。
    打个酱油,懂的不多
    水平有限,能帮则帮
    互相帮助,共同进步
    langui
    级别: 论坛先锋
    精华主题: 0
    发帖数量: 1538 个
    工控威望: 1761 点
    下载积分: 6246 分
    在线时间: 640(小时)
    注册时间: 2014-06-16
    最后登录: 2024-10-10
    查看langui的 主题 / 回贴
    4楼  发表于: 2021-07-14 15:22
    最先想到的也是10*10的阵列,对于三维阵列都没想到过。利用2进制的方式来试毒确实很新颖。
    yerong
    级别: 工控侠客
    精华主题: 1 篇
    发帖数量: 1882 个
    工控威望: 2032 点
    下载积分: 11026 分
    在线时间: 804(小时)
    注册时间: 2007-08-28
    最后登录: 2024-11-18
    查看yerong的 主题 / 回贴
    5楼  发表于: 2021-07-14 16:58
    有老鼠喝的多撑死了
    乌喽牛
    级别: 家园常客
    精华主题: 0
    发帖数量: 642 个
    工控威望: 761 点
    下载积分: 1837 分
    在线时间: 201(小时)
    注册时间: 2020-06-10
    最后登录: 2024-11-14
    查看乌喽牛的 主题 / 回贴
    6楼  发表于: 2021-07-14 17:22
    厉害了
    luelyzeng
    岁月不饶人,我亦未曾饶过岁月
    级别: 工控侠客
    精华主题: 0
    发帖数量: 356 个
    工控威望: 2101 点
    下载积分: 848 分
    在线时间: 187(小时)
    注册时间: 2015-01-12
    最后登录: 2024-06-20
    查看luelyzeng的 主题 / 回贴
    7楼  发表于: 2021-07-14 17:41
                  
    好好赚钱
    泰山之石
    A
    级别: 工控侠客
    精华主题: 0
    发帖数量: 2227 个
    工控威望: 2457 点
    下载积分: 11622 分
    在线时间: 913(小时)
    注册时间: 2008-11-12
    最后登录: 2024-11-19
    查看泰山之石的 主题 / 回贴
    8楼  发表于: 2021-07-15 08:13
    这个真是厉害,想都没想过啊?
    k2416207
    级别: 略有小成
    精华主题: 0
    发帖数量: 154 个
    工控威望: 334 点
    下载积分: 944 分
    在线时间: 323(小时)
    注册时间: 2014-04-30
    最后登录: 2024-11-19
    查看k2416207的 主题 / 回贴
    9楼  发表于: 2021-07-15 08:58
    281969148
    级别: 探索解密
    精华主题: 0
    发帖数量: 25 个
    工控威望: 154 点
    下载积分: 1728 分
    在线时间: 463(小时)
    注册时间: 2013-07-17
    最后登录: 2024-11-19
    查看281969148的 主题 / 回贴
    10楼  发表于: 2021-07-15 10:51
    低位老鼠撑死,高位老鼠渴死,观察员不敢喝也渴死了,至此Game Over
    13771165220
    级别: 家园常客
    精华主题: 0
    发帖数量: 323 个
    工控威望: 553 点
    下载积分: 1601 分
    在线时间: 85(小时)
    注册时间: 2017-11-27
    最后登录: 2024-11-13
    查看13771165220的 主题 / 回贴
    11楼  发表于: 2021-07-15 10:51
    难题。
    • «
    • 1
    • 2
    • 3
    • »
    • Pages: 1/3     Go