1000瓶試劑,其中一瓶有毒,最少需要多少隻小白鼠能找出有毒的試劑
思路:
這是一道典型的二分法查詢的演算法題,一般情況下,我們使用的都是序列的二分法,如果這道題沒有時間限制,我們就可以使用序列的二分法找到毒藥,步驟如下:
(1)首先,給試劑編號,1~1000
(2)給第一隻小白鼠喂1~500號混合的試劑,等待24小時,
(3)如果小白鼠死亡,則給第二隻喂1~250號混合的試劑,否則,喂501~750號試劑
(4)依次進行二分,可以看出,這樣最多需要10只小白鼠就能找到毒藥。
但是,這道題有時間限制,所以我們要同時給一定的小白鼠喂藥,然後從小白鼠的死亡情況找出毒藥。步驟如下:
(1)第一隻小白鼠:1~500
(2)第二隻小白鼠:1~250 + 501~750
(3)第三隻小白鼠:1~125 + 251~500 + 501~625 + 751+875
……….
依次下去,由於2^9 < 1000 < 2^10,所以需要10只小白鼠才能找到毒藥。
相關推薦
1000瓶試劑,其中一瓶有毒,最少需要多少隻小白鼠能找出有毒的試劑
思路: 這是一道典型的二分法查詢的演算法題,一般情況下,我們使用的都是序列的二分法,如果這道題沒有時間限制,我們就可以使用序列的二分法找到毒藥,步驟如下: (1)首先,給試劑編號,1~1000 (2)給第
有1000瓶水,其中有一瓶有毒,小白鼠只要嘗一點帶毒的水24小時後就會死亡至少要多少隻小白鼠才能在24小時
給1000個瓶分別標上如下標籤(10位長度): 0000000001 (第1瓶) 0000000010 (第2瓶) 0000000011 (第3瓶) ...... 1111101000 (第1000瓶) 從編號最後1位是1的所有的瓶子裡面取出1滴混在一起(比如從
有1000瓶水,其中有一瓶有毒,小白鼠只要嘗一點帶毒的水24小時後就會死亡,至少要多少隻小白鼠才能在24小時時鑑別出那瓶水有毒?
我來解釋一下,並給出一個方案,時間不是問題,24小時內肯定可以找出有毒的那瓶。 給1000個瓶分別標上如下標籤(10位長度): 0000000001 (第1瓶) 0000000010 (第2瓶) 0000000011 (第3瓶) ...... 1111101000 (第1000瓶) 從編號最後1
有1000瓶藥水,其中只有一瓶有毒。現在用小白鼠進行實驗,小白鼠只要服用任意量有毒藥水就會在24小時內死亡。問至少要用多少隻小白鼠進行實驗才能檢測出哪瓶藥水有毒?
時間不是問題,24小時內肯定可以找出有毒的那瓶。 給1000個瓶分別標上如下標籤(10位長度): 0000000001 (第1瓶) 0000000010 (第2瓶) 0000000011 (第3瓶) ...... 1111101000 (第1000瓶) 從編號
1000瓶無色無味的藥水,其中有一瓶毒藥,10只小白鼠拿過來做實驗。喝了無毒的藥水第二天沒事兒,喝了有毒的藥水後第二天會死亡。如何在一天之內(第二天)找出這瓶有毒的藥水?
題目:1000 瓶無色無味的藥水,其中有一瓶毒藥,10只小白鼠拿過來做實驗。喝了無毒的藥水第二天沒事兒,喝了有毒的藥水後第二天會死亡。如何在一天之內(第二天)找出這瓶有毒的藥水? 第一次看這個問題完全沒思路,應該有很巧妙的解法吧,後來還是百度一下,才明白怎麼回事。 思路就
面試題:1000瓶水其中有一瓶水有毒,有10只老鼠並且只要老鼠喝了有毒的水必死。請問怎樣通過一次實驗找出有毒的那瓶水。
import java.util.Arrays; import java.lang.StringBuilder; import java.util.Scanner; public class toxicWater { public static final int waterNumber = 1000;
16瓶藥水一瓶有毒,去小白鼠測試哪一瓶水有毒?
16瓶藥水一瓶有毒,去小白鼠測試哪一瓶水有毒? 面試的時候有個面試官問我,有16瓶藥水,其中一瓶有毒,一隻小白鼠喝過之後,一天之後會死亡,要求在少於15只小白鼠的情況下判斷出哪一瓶有毒,藥水可以兌在一起,小白鼠也可以喝多瓶藥水?我在面試的時候想,如果1瓶水被2只不同的小白鼠喝掉
使用MySQL查詢一個表的多列資料資訊,其中一列使用Max(),存在的坑
1、背景:查詢資料庫表資料,根據指定條件篩選出滿足條件的資料,此例返回滿足條件的兩條資料 2、需求:想在滿足條件的多條資料中篩選出其中fversion列值最大對應的完整記錄 3、實現: 3.1、在指定欄位上使用Max(),產生問題-造成查詢的資料錯亂,返回的資訊只有fversion列值滿足條件,f
PHP將一個二維陣列,以其中一列為KEY,一列為VALUE,返回一個一維陣列
/** * 將一個二維陣列,以其中一列為KEY,一列為VALUE,返回一個一維陣列 * @param array $array * @param null $column_key * @param $index_key * @throws \Exception * @return a
成大事者不糾結(碰到難辦的事情的時候,要就事論事,專註當下,放下過去,不憂未來,也不要記仇。防範之舉要節制。是做事情的其中一種策略,而且還要分場合)
什麽 但是 例子 其中 偏方 戰術 學會 自己 態度 成大事者不糾結(碰到難辦的事情的時候,要就事論事,放下過去,不憂未來,也不要記仇。防範之舉要節制。是做事情的其中一種策略,而且還要分場合)跟老中醫不要玩偏方不過也要看情況,只能說,這是處理難辦事情的其中一種方法有時
成大事者不糾結(碰到難辦的事情的時候,要就事論事,專注當下,放下過去,不憂未來,也不要記仇。防範之舉要節制。是做事情的其中一種策略,而且還要分場合)
成大事者不糾結(碰到難辦的事情的時候,要就事論事,放下過去,不憂未來,也不要記仇。防範之舉要節制。是做事情的其中一種策略,而且還要分場合)跟老中醫不要玩偏方不過也要看情況,只能說,這是處理難辦事情的其中一種方法有時候想多了沒用,不如著手去做那些簡單易做的事,等做完後發現難的事情也不那麼難了。而
解決兩個虛擬機器網路介面卡都為NAT模式,其中一臺無法上網的情況
兩個虛擬機器網路介面卡都為NAT模式,同時啟動後,一個不能上網。 出現這種情況是因為:其中一個虛擬機器是另一個虛擬機器整體複製過來的,導致其MAC地址一樣。 解決方案: 1.關機 2.編輯其中一臺虛擬機器的設定選項 3.選擇網路介面卡,點選“高階” 4.在M
mysql資料表,其中一列是json陣列進行高階查詢
1、首先我們看到資料表中,Form_Value_一列是josn格式存在的,又想通過其中的一組或者幾組鍵值對來進行查詢。2、SELECT * FROM core_process where Form_Value_ -> '$.attendancer' = '馬立新'
統計數字問題。給定一本書,其中包含n頁,計算出書的全部頁碼中用到了多少個數字0…9。
#include<stdio.h> int main(){ int a[10] = {0}; int input,i,j,m; printf("輸
企業面試題:一個三個數的式子,移動其中一根火柴,使等式成立,用程式或實現(可以用偽碼),輸出能成立的等式。
<p><span style="font-size:14px">一個三個數的式子,移動其中一根火柴,使等式成立,用程式或實現(可以用偽碼),輸出能成立的等式。</span></p><p><span style
選取10-100之間的10個數字,存入一個數組,並排序
一個數 隨機 調用 定義 -m 函數 實現 == turn //選取10-100之間的10個數字,存入一個數組,並排序//實現該功能函數function randomNub(arr,len,min,max){ //如果給的長度大於取值範圍,則超出提示 if(len&
Java鏈接HBASE數據庫,創建一個表,刪除一張表,修改表,輸出插入,修改,數據刪除,數據獲取,顯示表信息,過濾查詢,分頁查詢,地理hash
can charat nfa true 目錄結構 dfa byte sin extra 準備工作 1、創建Java的Maven項目 創建好的目錄結構如下: 另外註意junit的版本,最好不要太高,最開始筆者使用的junit4.12的,發現運行的時候會報錯。最後把Junit
foreach屬性-動態-mybatis中使用map類型參數,其中key為列名,value為列值
ima 符號 post gpo name ota public arr ack 最近有個需求,就是使用mybatis時,向mysql中插入數據,其參數為map類型,map裏面的key為列名,而key對應的value是該列對應的列值;問題是每次插入mysql中數據行的部分列,
現有n堆球,其中n是偶數,第i堆中有 ai 個球。現需要將其中 n / 2 堆中的球數全變成完 全平方數,另外的 n / 2 全不為完全平方數。
bcd dba amp com http abc 一行 增加 完全平方數 【問題描述】現有n堆球,其中n是偶數,第i堆中有 ai 個球。現需要將其中 n / 2 堆中的球數全變成完全平方數,另外的 n / 2 全不為完全平方數。你每一次操作可以選擇任意一堆增加或拿走(前提不
C 兩個連結串列中資料節點的資料域為一個字母 ,其中L1包含L2,在L1中找出與L2相等的字串,並將其逆置
前面相關操作在這呢,這個函式依託於此 //結構體 typedef struct Node { ElementType data; struct Node * next; } LNode, * LinkNode; //兩個連結串列中資料節點的資料域為一個字母 http