• 3、递归(动态规划思想)


    # -*- coding:utf-8 -*-
    #@Time : 2020/5/2 11:06
    #@Author: Aluosen
    #@File : Recurrence.py
    ##进制转换
    def toStr(n,base):
    convertString = '0123456789ABCDEF'
    if n < base:
    return convertString[n]
    else:
    return toStr(n//base,base) + convertString[n%base]
    print(toStr(65536,16))

    #汉诺塔问题
    def moveTower(height, fromPole, withPole, toPole):
    if height >= 1:
    moveTower(height - 1, fromPole, toPole, withPole)
    moveDisk(height, fromPole, toPole)
    moveTower(height - 1, withPole, fromPole, toPole)

    def moveDisk(disk, fromPole, toPole):
    print(f'Movin disd[{disk}] from {fromPole} to {toPole}')
    moveTower(3,'#1','#2','#3')



    #零钱兑换问题-1、递归解法
    def recMC(coinValueList,change):
    minCoins = change
    if change in coinValueList: #最小规模
    return 1
    else:
    for i in [c for c in coinValueList if c <= change]: #调用自身
    numCoins = 1 + recMC(coinValueList, change - i) #减小规模
    if numCoins < minCoins:
    minCoins = numCoins
    return minCoins

    #零钱兑换问题-2、递归解法改进(增加了最优解表,中间结果记录)
    def recMC(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 + recMC(coinValueList, change - i,knownResults) #减小规模
    if numCoins < minCoins:
    minCoins = numCoins
    #找到最优解,记录到表中
    knownResults[change] = minCoins
    return minCoins

    #零钱兑换问题-3、动态规划算法
    def dpMakeChange(coinValueList, change, minCoins):
    for cents in range(1, change + 1):
    coinCount = cents
    for j in [c for c in coinValueList if c <= cents]:
    if minCoins[cents -j] + 1 < coinCount:
    coinCount = minCoins[cents -j] +1
    minCoins[cents] = coinCount
    return minCoins[change]

  • 相关阅读:
    JS日期显示格式 yyyy-MM-dd hh:mm:ss
    Html.Partial和Html. RenderPartial
    $.ajax()详解
    B/S 类项目改善
    yaml
    跟我学SpringMVC目录汇总贴、PDF下载、源码下载
    全网最全ASP.NET MVC 教程汇总
    持续集成实践
    http://blog.jobbole.com/50603/#comment-153933
    Java代码优化(转)
  • 原文地址:https://www.cnblogs.com/Aluosen/p/12819387.html
Copyright © 2020-2023  润新知