問題描述:
例1:(阿里巴巴)有16瓶水,其中有一瓶有毒,小白鼠喝一滴水之後乙個小時會死,請問至少用幾隻小白鼠,在1小時內一定可以找出至少14瓶無毒的水?
分析:將16瓶水分別標號為1~16,2瓶為一組,分為8組。a1為第1,2瓶水以此類推,a8為第15,16瓶水。
小白鼠1喝:a1, a4, a5, a7
小白鼠2喝:a2, a4, a6, a7
小白鼠3喝:a3, a5, a6, a7
1小時後~
小白鼠1死: a1組有毒
小白鼠2死: a2組有毒
小白鼠3死: a3組有毒
小白鼠1,2死: a4組有毒
小白鼠2,3死: a6組有毒
小白鼠1,3死: a5組有毒
小白鼠1,2,3死: a7組有毒
都沒死: a8組有毒
答案:3只
分析:每個老鼠有死活兩種狀態分別為1,0。因此n個老鼠可以表達2^n種狀態。
假設:有4瓶水a,b,c,d,1瓶有毒,設n=2,可以表達4種狀態:
1號老鼠喝a,b;2號老鼠喝b,c
24小時後~
00:1號老鼠活,2號老鼠活。d有毒
01:1號老鼠活,2號老鼠死。c有毒
10:1號老鼠死,2號老鼠活。a有毒
11:1,2號老鼠死。b有毒
同理:有1000瓶水,2^10=1024,n=10所以選10個小白鼠,一共可以表示1024個狀態。
答案:10只
總結:有m種狀態,則選n只小白鼠。此時:m<2^n
有m瓶水,1瓶有毒,選n只小白鼠可以在規定時間內檢測出哪一瓶水有毒。直接用技巧m<2^n
像例1情況,有16瓶水,要求在規定時間內檢測出14瓶無毒的。可以兩瓶水分一組共8組。
問題轉換為:一共有8種狀態,檢測出哪一組檢測出有毒,則剩餘的組無毒。此時m=8,所以選3只小白鼠2^3=8
阿里巴巴筆試題
1 有乙個虛擬儲存系統,若程序在記憶體中佔3頁 開始時記憶體為空 若採用先進先出 fifo 頁面淘汰演算法,當執行如下訪問頁號序列後1,2,3,4,5,1,2,5,1,2,3,4,5,會發生多少缺頁?a 7 b 8 c 9d 10 2 設有乙個順序棧s,元素s1 s2 s3 s4 s5 s6依次進棧...
阿里巴巴筆試題
題意 給定一串數字 判斷是否存在這三個元素,它們將數字串分為四個子串,其中每個子串的數字之和均相同 該3個元素不納入計算 要求時間複雜度和空間複雜度均不能超過o n 思路 奇妙的利用了單調性,列舉第一段的和,第一段的和確定了,那麼接下來的2,3,4段的和就都確定了,什麼單調性呢?就是i右移,j,k都...
阿里巴巴筆試題
1 有乙個虛擬儲存系統,若程序在記憶體中佔3頁 開始時記憶體為空 若採用先進先出 fifo 頁面淘汰演算法,當執行如下訪問頁號序列後1,2,3,4,5,1,2,5,1,2,3,4,5,會發生多少缺頁?a 7 b 8 c 9d 10 2 設有乙個順序棧s,元素s1 s2 s3 s4 s5 s6依次進棧...