程式設計珠璣 咖啡罐問題

2021-06-17 22:56:21 字數 438 閱讀 3869

這是程式設計珠璣第2版第4章的乙個習題:咖啡罐問題

題意:給定乙個盛有一些黑色豆子和一些白色豆子的咖啡罐以及一大堆"額外"的黑色豆子,重複下面的過程,直到罐中僅剩下一顆豆子為止。

從罐中隨機的選取兩顆豆子,如果顏色相同,就將它們都扔掉並且放入乙個額外的黑色豆子;如果顏色不同,就將白色的豆子放回罐中,而將黑色的豆子扔掉。

證明該過程會終止。最後留在罐中的豆子顏色與 最初罐中白色豆子和黑色豆子的數量有何關係?

解答:首先證明該過程會終止。因為每次不是扔掉乙個黑色豆子,就是扔掉兩個白色豆子並放入一顆黑色豆子。所以每次總是扔掉一顆豆子。一顆一顆的往外仍,最後會僅剩一顆豆子的。

因為每次扔掉的白色豆子或者是0個或者是2個。如果白色豆子是偶數的話,白色豆子最終都會被扔掉,剩下的是黑豆。

如果白色豆子是奇數的話,剩下的肯定是白色豆子。(而程式設計珠璣的答案卻說是可能是白色的。表示不理解。)

110002 BOP專題 C4 6 咖啡罐問題

本系列題解第一篇紀念.分析 設白球w個,黑球b個,記為 w,b 由題目要求得 1.每次操作w 2或b 2或b 1且w 1 2.若拿出是兩個白球 則放入乙個黑球,即 w 2,b 1 若兩個白球 則放入乙個黑球,即 w,b 2 1 w,b 1 3.若一黑一白 則放入乙個白球,即 w 1 1,b 1 w,...

程式設計珠璣 取樣問題

1.問題描述 程式的輸入包含兩個整數m和n,其中m2.解決思路與 實現 程式設計珠璣上給出了四個函式 1 genknuth 演算法依次考慮整數0,1,2,n 1,並通過乙個適當的隨機測試對每個整數進行選擇。通過按序訪問整數,可以保證輸出結果是有序的 c 實現 void genknuth int m,...

程式設計珠璣之取樣問題

要從0 n 1的整數中取出來m m第二種演算法和以前一篇的洗盤演算法比較相似,但是並不是嚴格的每個數字取到的概率為m n,演算法是這樣的,先生成乙個n維的整數陣列,a值為0 n 1,然後生成m個n內的隨機整數rand,然後交換a i 和a rand i 0.m 1 至於是否是滿足m n證明好像有點難...