同事轉了一道題:程序員
有 100 支如出一轍的瓶子,編號 1-100。其中 99 瓶是水,1 瓶是看起來像水的毒藥。
只要老鼠喝下一小口毒藥,一天後就會死。code如今你有 7 只老鼠和一天時間,怎麼檢驗出哪一個號碼的瓶子裏是毒藥?二進制
翻看答案:程序
首先,將瓶子的 10 進制編號數改爲 7 位的 2 進制碼。
而後,讓第 1 只老鼠喝全部 2 進制碼第 1 位是 1 的瓶子中的水;讓第 2 只老鼠喝全部 2 進制碼第 2 位是 1 的瓶子中的水;以此類推下去。
這樣,每一個老鼠次日的死活狀況就決定了毒水瓶子二進制碼這一位的數字:老鼠死,對應 1,反之爲 0.時間
看懂後你也許會說:啊~~~原來是二進制啊~~~co
可我要說:這道題和二進制無關,本質是尋找一組映射關係。block
毒藥狀態
到小鼠生死狀態
的映射關係數字
能讓每種可能的毒藥狀態
映射到不一樣的小鼠生死狀態
,都是這道題的解。
給出的答案只是A(128, 100)
種方案中的一種。
例如構造一個讓小鼠死亡最少的方案:
總和二進制打交道,致使咱們想問題角度總往二進制上靠,僅得出一些只有程序員才能理解的答案。