458 可憐的小豬

2021-08-28 02:39:31 字數 1160 閱讀 2829

有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 只水桶,豬飲水中毒...