有1000只水桶,其中有且只有一桶裝的含有毒藥,其餘裝的都是水。它們從外**起來都一樣。如果小豬喝了毒藥,它會在15分鐘內死去。
問題來了,如果需要你在一小時內,弄清楚哪只水桶含有毒藥,你最少需要多少只豬?
回答這個問題,並為下列的高階問題編寫乙個通用演算法。
高階:
假設有 n 只水桶,豬飲水中毒後會在 m 分鐘內死亡,你需要多少豬(x)就能在 p 分鐘內找出「有毒」水桶?n只水桶裡有且僅有乙隻有毒的桶。
分析:x只豬喝水來找毒藥,最優的方法應該是把x只豬看出x維,每只豬喝該維為某值的桶。這樣每過m分鐘,最外一層水桶就能判斷出是否有毒,而且剩下的時間足夠判斷內部具體哪個桶有毒。
由於前4桶無毒,那麼最後一桶肯定有毒,所以乙隻豬可以鑑別5桶水。
以二維為例,小豬編號(0,1),水桶編號(00,01,02,…,10,11,…,43,44)共25桶,每15分鐘死一次,說明一小時可以喝四桶水,鑑別五桶水。第一次,小豬0喝第0位為0的,小豬1喝第1位為0的,以此類推。
15min:01
2345
0111
1111
0000
2100
0031
0000
4100
0030min:01
2345
0111
1111
1111
2110
0031
1000
4110
0045min:01
2345
0111
1111
1111
2111
1131
1100
4111
0060min:01
2345
0111
1111
1111
2111
1131
1111
4111
10結果相當於求minutestotest/minutestodie+1
為基數的最少能用多少位來表達buckets
。
class solution
return
0; }
};
458 可憐的小豬
有1000只水桶,其中有且只有一桶裝的含有毒藥,其餘裝的都是水。它們從外 起來都一樣。如果小豬喝了毒藥,它會在15分鐘內死去。問題來了,如果需要你在一小時內,弄清楚哪只水桶含有毒藥,你最少需要多少只豬?回答這個問題,並為下列的高階問題編寫乙個通用演算法。高階 假設有 n 只水桶,豬飲水中毒後會在 m...
458 可憐的小豬
有 buckets 桶液體,其中 正好 有一桶含有毒藥,其餘裝的都是水。它們從外 起來都一樣。為了弄清楚哪只水桶含有毒藥,你可以喂一些豬喝,通過觀察豬是否會死進行判斷。不幸的是,你只有 minutestotest 分鐘時間來確定哪桶液體是有毒的。餵豬的規則如下 選擇若干活豬進行餵養 可以允許小豬同時...
458 可憐的小豬(Java)
問題描述 有1000只水桶,其中有且只有一桶裝的含有毒藥,其餘裝的都是水。它們從外 起來都一樣。如果小豬喝了毒藥,它會在15分鐘內死去。問題來了,如果需要你在一小時內,弄清楚哪只水桶含有毒藥,你最少需要多少只豬?回答這個問題,並為下列的高階問題編寫乙個通用演算法。高階 假設有 n 只水桶,豬飲水中毒...