演算法筆記 15個瓶子,4只老鼠,測試哪瓶有毒

2021-08-21 14:40:18 字數 1157 閱讀 7742

看到今天一道演算法題,就寫了一下自己的思路,希望有大牛,看到這個題,能提出更好的想法,再進行交流學習,我只用了一點簡單的c++ 進行實現

有15個瓶子,其中最多有一瓶有毒,現在有四隻老鼠,喝了有毒的水之後,第二天就會死。如何在第二天就可以判斷出哪個瓶子有毒 

我的想法是,因為最多有一瓶有毒,所以只有,0瓶有毒,或者其中一瓶有毒,所以是16種狀態,所以用4只老鼠的喝下水的存活狀態標級 '0' 或者 '1',來進行標記對應的瓶子 

0000 => 無毒

0001 => 1號瓶

0010 => 2號瓶

0011 => 3號瓶

0100 => 4號瓶

0101 => 5號瓶

0110 => 6號瓶

0111 => 7號瓶

1000 => 8號瓶

1001 => 9號瓶

1010 => 10號瓶

1011 => 11號瓶

1100 => 12號瓶

1101 => 13號瓶

1110 => 14號瓶

1111 => 15號瓶

將水餵給當前瓶子編號每一位為 '1' 的老鼠,例如第7號瓶子,則給第二隻,第三隻,第四只老鼠喂瓶子裡面的水,最後觀察老鼠的存活狀態,來判斷是哪一瓶,比如最後是 '1011' 則是11號瓶有毒。

下面是**實現,**方面我覺得這就是乙個從輸入老鼠狀態到判斷是哪個瓶子有毒的過程。前面這個階段,如果通過老鼠碰到是否有毒的水,來確認是否死亡狀態,則需要知道水是否有毒,提前知道哪瓶,再去判斷。則有些自欺欺人的味道

#include using namespace std; 

int main();//老鼠狀態,'0'為存活,'1'為死亡

int drug = 0;//有毒瓶子號

for (int i = 0; i < mou_num; i++)

for (int i = 0; i < mou_num; i++)

//判斷是否有毒

演算法筆記 15個瓶子,4只老鼠,測試哪瓶有毒

看到今天一道演算法題,就寫了一下自己的思路,希望有大牛,看到這個題,能提出更好的想法,再進行交流學習,我只用了一點簡單的c 進行實現 有15個瓶子,其中最多有一瓶有毒,現在有四隻老鼠,喝了有毒的水之後,第二天就會死。如何在第二天就可以判斷出哪個瓶子有毒 我的想法是,因為最多有一瓶有毒,所以只有,0瓶...

演算法筆記(4)

滑動視窗 問 這裡我沒掌握這個寫法,我是使用的雙重for迴圈寫出來的,感覺不太好,分享乙個最優寫法 public class demod int arr2 system.out.println demod.findlength arr,arr2 找到長度小的那乙個陣列 public intfindl...

演算法15 數論4 自守數

如果乙個正整數的平方的末尾幾位數等於這個數本身,那麼這個數便稱為自守數。自守數有如下的一些性質 1 以自守數為後幾位的兩數相乘,結果的後幾位仍是自守數 2 n 1位的自守數出自n為的自守數。3 兩個n位子守數的和等於10的n次方加1.我們給出兩種自守數的演算法 1 2 題目 自守數 3author ...