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
发布了51 篇原创文章 · 获赞 34 · 访问量 907

猜你喜欢

转载自blog.csdn.net/weixin_43412569/article/details/104856445
今日推荐