《程式設計師的演算法趣題》-(日)增井敏克 Python解題 -- (Q23)
阿新 • • 發佈:2018-12-14
《程式設計師的演算法趣題》-(日)增井敏克 , 書中為69 道數學謎題編寫了解題程式, 程式語言為:Ruby,JavaScript,C語言。有興趣的同學,可以購書閱讀~
在此更新個人編寫的Python版,僅供學習使用。(執行環境:Python3.6)
Q23 二十一點通吃
賭場經典的二十一點遊戲 A中,每回合最少下注 1 枚硬幣,贏了可以得到 2 枚硬幣,輸了硬幣會被收走。
假設最開始只擁有 1 枚硬幣,並且每回合下注 1 枚,那麼 4 回合後還能剩餘硬幣的硬幣枚數變化情況如圖所示,共有 6 種(圓形中間的數字代表硬幣枚數)。
問題
求最開始擁有 10 枚硬幣時,持續24 回合後硬幣還能剩餘的硬幣枚數變化情況共有多少種?
# 儲存計算過的資料, 極速~ calcuted_map = {} def gamble(count, money): if money == 0: return 0 if count == 0: return 1 if (count, money) in calcuted_map: return calcuted_map[(count, money)] win = gamble(count-1, money-1) lose = gamble(count-1, money+1) calcuted_map[(count, money)] = win+lose return win+lose print("共有%s種" % gamble(24, 10))
執行結果:
共有16051010種