東方花豬
級別: 網(wǎng)絡(luò)英雄
精華主題: 0
發(fā)帖數(shù)量: 856 個
工控威望: 6585 點
下載積分: 12116 分
在線時間: 748(小時)
注冊時間: 2009-12-17
最后登錄: 2024-11-14
查看東方花豬的 主題 / 回貼
樓主  發(fā)表于: 2021-07-14 13:29
一道有意思的算法題,了解一下,對擴張思路有幫助。

問題描述:
有100個一模一樣的瓶子,其中99瓶中裝的是普通的水,一瓶是毒藥,水和毒藥只能通過老鼠來分辨,喝下毒藥的老鼠會在一個星期后死亡(剛好一個星期),F(xiàn)在你有一個星期時間,請問至少需要多少只老鼠才能確定出哪個瓶子裝的是毒藥?

我本來想的是用坐標(biāo)的方式來確定哪一瓶是毒藥:
1、擺成2x50,4x25,5x20,10x10的方陣
2、每行都放一只老鼠,然后讓老鼠把這行水都喝一口
3、每列放一只老鼠,然后讓老鼠把這列水都喝一口
4、一周后測試每一行和測試每一列的老鼠中都會有一只死亡,通過死亡的老鼠就可以判斷毒藥的坐標(biāo)啦
5、需要的老鼠數(shù)量=方陣的長度+寬度
   所以10x10的方陣最合適,需要老鼠20只
6、后來又想了想,為什么不建一個三維的坐標(biāo)系呢,經(jīng)計算4x5x5的坐標(biāo)系最合適,所需老鼠=4+5+5=14只

最后看了其他解題方式之后,了解到這是一個二級制問題,用七只老鼠即可解決
這個解體思路,非常巧妙。

我們知道2的10次放等于1024,那么通過把瓶子編成二進制,同時把老鼠變成二進制的位值就可以分辨到底哪瓶水是毒藥

1.利用二進制來做,最少的老鼠數(shù)量就是計算2的多少次方大于等于瓶子數(shù)量,例如本題為7(2的7次方為128,大于100)。對100瓶進行二進制編碼,這樣可以排列出1xxxxxx,x1xxxxxx,...,xxxxxx1這樣的七組序列。如第一瓶藥水編碼為0000001,第五瓶藥水編碼為0000101,第一百瓶藥水的編碼是1100100.

2.把老鼠分辨編成1-10號,分別對應(yīng)二進制的第1位,第2位.....第10位

3.根據(jù)每瓶水的二進制代碼給老鼠喝水,該位值為1就給該位值的老鼠喝,為0就不喝,比如,第一瓶藥水編號為0000000001,就只給1號老鼠喝,第84瓶,編號是1010100 ,就給3號,5號,7號老鼠喝

4.1星期后,看哪些老鼠死了,然后死的老鼠位為1,沒死的老鼠位為0,組成二進制數(shù),該數(shù)對應(yīng)的瓶子編號就是有毒的編號。
本帖最近評分記錄:
  • 下載積分:+2(windstorm) 好貼好貼!
  • 下載積分:+5(bogegongkong) 感謝分享!
  • 拆二代
    荏苒幾盈虛
    級別: 論壇先鋒
    精華主題: 0
    發(fā)帖數(shù)量: 401 個
    工控威望: 1398 點
    下載積分: 4657 分
    在線時間: 126(小時)
    注冊時間: 2019-05-09
    最后登錄: 2024-10-01
    查看荏苒幾盈虛的 主題 / 回貼
    1樓  發(fā)表于: 2021-07-14 13:54
    厲害了
    血滴子三號
    臺金伺服電機/驅(qū)動器
    級別: 略有小成
    精華主題: 0
    發(fā)帖數(shù)量: 187 個
    工控威望: 223 點
    下載積分: 6572 分
    在線時間: 82(小時)
    注冊時間: 2021-04-21
    最后登錄: 2022-08-25
    查看血滴子三號的 主題 / 回貼
    2樓  發(fā)表于: 2021-07-14 14:42
    雖然覺得有道理。但對于現(xiàn)實來說,還是看預(yù)算……預(yù)算充足,還是100簡易。
    珠海 臺金 伺服電機/驅(qū)動器
    源頭工廠制造企業(yè)
    13536588499(微信同號)
    菜鳥入行
    級別: 論壇先鋒

    精華主題: 0
    發(fā)帖數(shù)量: 1381 個
    工控威望: 1557 點
    下載積分: 3686 分
    在線時間: 177(小時)
    注冊時間: 2017-09-01
    最后登錄: 2024-06-11
    查看菜鳥入行的 主題 / 回貼
    3樓  發(fā)表于: 2021-07-14 14:55
    可憐的小白鼠,橫豎都是死。
    打個醬油,懂的不多
    水平有限,能幫則幫
    互相幫助,共同進步
    langui
    級別: 論壇先鋒
    精華主題: 0
    發(fā)帖數(shù)量: 1538 個
    工控威望: 1761 點
    下載積分: 6246 分
    在線時間: 640(小時)
    注冊時間: 2014-06-16
    最后登錄: 2024-10-10
    查看langui的 主題 / 回貼
    4樓  發(fā)表于: 2021-07-14 15:22
    最先想到的也是10*10的陣列,對于三維陣列都沒想到過。利用2進制的方式來試毒確實很新穎。
    yerong
    級別: 工控俠客
    精華主題: 1 篇
    發(fā)帖數(shù)量: 1878 個
    工控威望: 2028 點
    下載積分: 11018 分
    在線時間: 803(小時)
    注冊時間: 2007-08-28
    最后登錄: 2024-11-14
    查看yerong的 主題 / 回貼
    5樓  發(fā)表于: 2021-07-14 16:58
    有老鼠喝的多撐死了
    烏嘍牛
    級別: 家園?
    精華主題: 0
    發(fā)帖數(shù)量: 642 個
    工控威望: 761 點
    下載積分: 1832 分
    在線時間: 201(小時)
    注冊時間: 2020-06-10
    最后登錄: 2024-11-14
    查看烏嘍牛的 主題 / 回貼
    6樓  發(fā)表于: 2021-07-14 17:22
    厲害了
    luelyzeng
    歲月不饒人,我亦未曾饒過歲月
    級別: 工控俠客
    精華主題: 0
    發(fā)帖數(shù)量: 356 個
    工控威望: 2101 點
    下載積分: 848 分
    在線時間: 187(小時)
    注冊時間: 2015-01-12
    最后登錄: 2024-06-20
    查看luelyzeng的 主題 / 回貼
    7樓  發(fā)表于: 2021-07-14 17:41
                  
    好好賺錢
    泰山之石
    A
    級別: 工控俠客
    精華主題: 0
    發(fā)帖數(shù)量: 2221 個
    工控威望: 2451 點
    下載積分: 11610 分
    在線時間: 912(小時)
    注冊時間: 2008-11-12
    最后登錄: 2024-11-13
    查看泰山之石的 主題 / 回貼
    8樓  發(fā)表于: 2021-07-15 08:13
    這個真是厲害,想都沒想過?
    k2416207
    級別: 略有小成
    精華主題: 0
    發(fā)帖數(shù)量: 154 個
    工控威望: 334 點
    下載積分: 944 分
    在線時間: 322(小時)
    注冊時間: 2014-04-30
    最后登錄: 2024-11-11
    查看k2416207的 主題 / 回貼
    9樓  發(fā)表于: 2021-07-15 08:58
    281969148
    級別: 探索解密
    精華主題: 0
    發(fā)帖數(shù)量: 25 個
    工控威望: 154 點
    下載積分: 1728 分
    在線時間: 460(小時)
    注冊時間: 2013-07-17
    最后登錄: 2024-11-13
    查看281969148的 主題 / 回貼
    10樓  發(fā)表于: 2021-07-15 10:51
    低位老鼠撐死,高位老鼠渴死,觀察員不敢喝也渴死了,至此Game Over
    13771165220
    級別: 家園?
    精華主題: 0
    發(fā)帖數(shù)量: 323 個
    工控威望: 553 點
    下載積分: 1601 分
    在線時間: 85(小時)
    注冊時間: 2017-11-27
    最后登錄: 2024-11-13
    查看13771165220的 主題 / 回貼
    11樓  發(fā)表于: 2021-07-15 10:51
    難題。