有 n個一模一樣的瓶子,其中有 n-1瓶是普通的水,有一瓶是毒藥。任何喝下毒藥的生物都會在一星期之後死亡。問你需要有多少只小白鼠和一星期的時間,來檢驗出哪個瓶子裡有毒藥?怎麼檢驗?程式設計實現檢驗過程。
程式設計思路:
設瓶子個數為n,根據我另一篇博文可知老鼠不能少於ceiling(log(n))只,首先程式設計得到老鼠的數量k,然後模擬老鼠吃藥的過程,最後根據老鼠的死亡情況可以得到瓶子的編號。
#include #include #include using namespace std;
/*b中為true的那個是有毒的瓶子
*/int findpoisonbottle(vectorb)
status.resize(k, false);
for(int i=0; i>= 1;
mouseindex++;
} }//從老鼠死亡情況推出瓶子的編號
for(int i=1; i<=k; i++)
return index;
}int main()
老鼠與毒藥問題
偶然在社群上看到這個問題,看到了程式設計師的回答,饒有興趣,於是查詢了csdn後,終於看懂了。有1000瓶液體 正常,無毒 但是由於工作人員失誤,將毒藥滴到了其中一瓶中,從外觀和氣味上完全無法分辨出哪乙個是被汙染過的,我們只知道這個毒藥的毒發期是7天,實驗室有10只小白鼠,只有7天的時間,如何實驗才...
老鼠與毒藥問題
大家應該都聽說過這個老題目 有 1000 個一模一樣的瓶子,其中有 999 瓶是普通的水,有一瓶是毒藥。任何喝下毒藥的生物都會在一星期之後死亡。現在,你只有 10 只小白鼠和一星期的時間,如何檢驗出哪個瓶子裡有毒藥?這個問題的答案也堪稱經典 把瓶子從 0 到 999 依次編號,然後全部轉換為 10 ...
老鼠與毒藥問題
有1000瓶藥,其中有一瓶有毒,老鼠一旦喝一點毒藥就會在24小時後死亡,問最少要多少只老鼠才能在24小時後知道哪一瓶是有毒的。把所有的數轉換成二進位制,如最大的1000轉化成二進位制為1111101000 將所有第一位為1的取出一些混合在乙個瓶子裡 將所有第二位為1的取出一些混合在乙個瓶子裡 將所有...