python數據結構:找零兌換問題的遞歸解法

找零兌換問題:遞歸解法改進代碼

import time

def recDC(coinValueList,change,knownResults):
    minCoins=change
    if change in coinValueList: #遞歸基本結束條件
        knownResults[change]=1 #記錄最優解
        return 1
    elif knownResults[change]>0:
        return knownResults[change] #查表成功,直接用最優解
    else:
        for i in[c for c in coinValueList if c<= change]:
            numCoins=1+recDC(coinValueList,change-i,knownResults)
            if numCoins<minCoins:
                minCoins=numCoins #找到最優解,記錄到表中
                knownResults[change]=minCoins
    return minCoins
print(time.clock())
print(recDC([1,5,10,25],63,[0]*64))
print(time.clock())
1870.890823
6
1870.8918398
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章