葯劑演算法
發布時間: 2025-01-03 11:14:15
① 邏輯演算法題(不斷更新)
問:有1000瓶葯劑和10隻老鼠,葯劑中有1瓶毒葯,喝了一周內死亡(有的題目改成了五分鍾,五分鍾真虧他能喂完),如何在仿早一周內找到這瓶毒葯。
答:將這1000瓶葯劑編號0~999,並轉換為二進制 就是0000000001~1111101000,從右向左開始,讓第一隻老鼠喝所有右起第一位編號為1的葯劑,第二隻老鼠喝所有右起第二位編號為1的葯劑,依次類推,10隻老鼠喝完10位的葯劑,一周後,如果第一隻老鼠死亡,那麼毒葯的從右起第一位為1,未死亡的話就為0,所以根據死亡狀態就可以知道該瓶毒葯的二進制。
例如狀態是:死亡,存活,死亡,存活,存活,存活,死亡,存活,死亡,存活 = 010111010=186
從上面例銀瞎子就可以知道第二種和第三種問題的解法了吧
測試時間提升為兩周就說明第一周測試不死的老鼠可以拿來繼續第二周的測試 ,所以老鼠的狀態就變成了三種:存活(未實驗),死亡,實驗後存活。
將全部葯劑編號後轉為三進制數,老鼠右起依次喝0編號的葯劑,如果死亡,那麼該位編號為0,鋒大空如果未死亡,那麼可能為1和2,第二周把存活的老鼠繼續喝該位1編號的葯劑,如果死亡就為1,存活就為2,這樣就找到了毒葯的三進制編號,然後轉換成下標即可。
總結:有 n 只小白鼠 m周的時間可以從 (m+1)^n 個瓶子中檢驗出毒葯來。
熱點內容