python函数找钱_找钱问题–动态规划一例
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                python函数找钱_找钱问题–动态规划一例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                用無限多的面值為 S = {S1, S2, …, Sm} 的分幣,表示一個特定的分值n,有多少種方法?這個就是找錢問題 (Coin Change Problem)。
比如,用 1美分 和 5 美分,表示7美分,有2種方法,第一種是1個5美分,2個1美分;第二種是7個1美分。
因為順序對結果沒有影響,即“1個5美分,2個1美分”和“2個1美分,1個5美分”是一樣的,我們限定 S1 < S2 < … < Sm。用遞歸的方法,解法的數量 C(n, m),可以分成2類:
一類是表示方法里不需要 Sm的,另一類是表示方法里需要Sm的。如上面的例子,一類表示是需要5美分,另一類不需要。
于是,遞歸公式如下:
C(n, m) = C(n, m-1) + C(n-Sm, m)
Python代碼:def count1(n,m):
global numCalls
numCalls += 1
global S
if n == 0:
return 1
if n < 0:
return 0
if m == 1:
return 1
return count1(n, m-1) + count1(n-S[m-1],m)
S = (1,5,10,25)
numCalls = 0
print count1(100,len(S))
print numCalls
count1()函數的運
總結
以上是生活随笔為你收集整理的python函数找钱_找钱问题–动态规划一例的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 上海计算机考试分值,2019年上海中考总
 - 下一篇: 德国精品软件 看图软件介绍 Asham