我的一位朋友被問及面試的這個問題,並且當時無法解決這個問題。以爲我會分享一樣的。優化查找中毒cookie的天數
有一千塊巧克力餅乾,其中一塊中毒。您每天可以使用10只實驗室老鼠。每隻大鼠可以在任何數量的小甜餅上輕咬,並且每個小甜餅可以被任意數量的大鼠啃咬。 大鼠在中毒的小甜餅上啃食後,需要一天的時間才能看到大鼠受到毒害後對大鼠的影響。
優化的天數。我能想出一個算法來找出中毒的cookie 2天,但我相信存在一種方法以1天
我的一位朋友被問及面試的這個問題,並且當時無法解決這個問題。以爲我會分享一樣的。優化查找中毒cookie的天數
有一千塊巧克力餅乾,其中一塊中毒。您每天可以使用10只實驗室老鼠。每隻大鼠可以在任何數量的小甜餅上輕咬,並且每個小甜餅可以被任意數量的大鼠啃咬。 大鼠在中毒的小甜餅上啃食後,需要一天的時間才能看到大鼠受到毒害後對大鼠的影響。
優化的天數。我能想出一個算法來找出中毒的cookie 2天,但我相信存在一種方法以1天
我想我得到了它這樣做。
想象一個二叉樹1024塊餅乾作爲根(這個數字只是出來清潔,但是這會爲任意數量小於1024的工作)。將1024個餅乾分成兩組512個,這些組中的每一組都是根的孩子。然後將每組512個分成256個組,然後讓這些組成爲其中每個組的子組,等等。你最終應該有11層樹。
分配每隻大鼠給除了根一樹的水平。每隻老鼠只吃他們關卡左側的餅乾。第二天,遍歷樹,併爲每隻老鼠死亡,按照左邊的分支,對於每隻老鼠,按照右邊的分支。由此產生的cookie應該是中毒的。
這是三天內「易」解決方案:
現在對於在一天之內「硬」的解決方案:
只需在二進制文件中編寫一千個餅乾就可能需要半天時間,但這是一個美麗的解決方案! – 2012-07-15 00:03:58
@SimonAndréForsberg事實上,「簡單」解決方案的優點是測試人員只需極少的工作。 – Neil 2012-07-16 00:12:55
是的,但過了一天 – sanz 2012-07-14 23:00:52
漂亮的病態面試問題(除非我猜他是否申請爲害蟲控制公司工作)。 – 2012-07-14 23:13:27
兩個eyebrowsoffire和Neil有它(它們是相同的算法的備用說明。) – phs 2012-07-14 23:53:03