鉴别毒水问题
一、有1000瓶水,其中有一瓶有劇毒(假設哪怕一個毒藥分子在里面也能致命),現在給你10只小狗在24小時內通過小狗試藥的方式鑒定出來哪瓶藥有毒。
情況1:假設小狗服藥后2小時內即可判斷是否中毒,鑒別方案有哪些?
情況2:假設小狗服藥之后20小時才能判斷是否中毒,鑒別方案又是什么?
對與情況1,由于要求24小時內得出結果,因此最多可以等待12次試驗結果,因此可以采用簡單的二分查找的方法找到有毒的水。
對于情況2,由于20小時后才能判斷是否中毒,因此只能等待1次試驗結果。這個問題的模型就是用10位二進制位可以表示1000(二進制表示111110100)內的一個數字.我們用8瓶水說明情況(要用3個小白鼠做實驗哦)。
000=0
001=1
010=2
011=3
100=4
101=5
110=6
111=7
一位表示一個老鼠,0-7表示8個瓶子。也就是分別將1、3、5、7號瓶子的藥混起來給老鼠1吃,2、3、6、7號瓶子的藥混起來給老鼠2吃,4、5、6、7號瓶子的藥混起來給老鼠3吃,哪個老鼠死了,相應的位標為1。如老鼠1死了、老鼠2沒死、老鼠3死了,那么就是101=5號瓶子有毒。???
說個簡單的辦法 將8瓶水矩陣來擺 分別編號12345678
123
456
78
一二三老鼠 分別橫向喝 即一老鼠喝123的混合 二老鼠喝456的混合 三老鼠喝78的混合
四五六老鼠 分別縱向喝 即四老鼠喝147的混合 五老鼠喝258的混合 六老鼠喝36的混合
24小時過后 死老鼠所對應的直線交點就是 兩瓶毒藥位置
關于毒藥問題 還可以用二進制轉化十進制的辦法處理 但是那種比較適合在一瓶毒藥情況下
用到的白鼠數量較少
但是用矩陣的辦法可以無視毒藥數量 完全檢驗出毒藥
?
總結
- 上一篇: VB基础学习
- 下一篇: c语言编手机蓝牙软件的代码,51单片机C