动态规划(DynamicProgramming)-硬币找零

文章目录

  • 动态规划(DynamicProgramming)-硬币找零
    • 1、动态规划
      • a、什么是动态规划
      • b、适用对象
    • 2、硬币找零-Coding

1、动态规划

a、什么是动态规划

动态规划(简称:DP)是一种将原有问题分解为较为简单地子问题的方式求解复杂问题的种方法

b、适用对象

  • 两点间最短路径
  • 一组数据的最佳拟合点
  • 满足条件的最小对象集合

2、硬币找零-Coding

# -*- coding: utf-8 -*-
# 动态规划
# 贪婪算法class RecMC:"""实现找零时使用最少的硬币"""def __init__(self, coinValueList):# 硬币数额列表self.coinValueList = coinValueListdef recMc(self, change):# 默认初始硬币的数量=数值(拥有1毛的硬币)minCoins = changeif change in self.coinValueList:# 如果数额刚好=硬币的数额, 仅需一次return 1else:# 找零的硬币数值必须小于找零数值# 如果存在可以找零的大额硬币,优先使用大额硬币,1毛硬币兜底for i in [c for c in self.coinValueList if c <= change]:print(change-i, "|".center(6, " "), i)numCoins = 1 + self.recMc(change - i)if numCoins < minCoins:minCoins = numCoinsreturn minCoinsdef recDc(self, change, knownResults):minCoins = changeif change in self.coinValueList:knownResults[change] = 1return 1elif knownResults[change] > 0:return knownResults[change]else:for i in [c for c in self.coinValueList if c <= change]:numCoins = 1 + self.recDc(change - i, knownResults)if numCoins < minCoins:minCoins = numCoinsknownResults[change] = minCoinsreturn minCoinsif __name__ == "__main__":recMC = RecMC([1, 5, 10])print(recMC.recMc(32))print("main".center(32, "="))print(recMC.recDc(63, [0]*64))

Python 动态规划(DynamicProgramming)-硬币找零相关推荐

  1. java动态规划凑硬币问题,详解动态规划最少硬币找零问题--JavaScript实现

    硬币找零问题是动态规划的一个经典问题,其中最少硬币找零是一个变种,本篇将参照上一篇01背包问题的解题思路,来详细讲解一下最少硬币找零问题.如果你需要查看上一篇,可以点击下面链接: 详解动态规划01背包 ...

  2. 动态规划实战--硬币找零问题

    上一篇文章上提到硬币找零的例子,现在我们实战动态规划就从硬币找零开始 问题描述: 给定 n 种不同面值的硬币,分别记为 c[0], c[1], c[2], - c[n],同时还有一个总金额 k,编写一 ...

  3. 动态规划解决硬币找零问题

    题目描述:给定不同面额的硬币 coins 和一个需要找零的金额 n.编写一个函数来计算可以凑成金额n所需的最少的硬币个数.并求出所需硬币的所有面额并输出.(硬币可重复多次使用) 动态规划算法通常用于求 ...

  4. 动态规划——最少硬币找零问题(python)

    1. 问题描述 2. 思路 刚开始是想利用贪心算法.假如要找的零钱总额为49元,先找10块的,可以找40块,再继续找5块的,可以找5块,再继续找2块的,可以找4块.找够49元的最少纸币数为4 + 1 ...

  5. 动态规划——硬币找零思路

    找零的两种问题 硬币找零问题,有两种.一种用贪心解决,一种用动态规划解决. 问题1:假设我们有 v1,v2,--,vn(单位是元)这些币值的硬币,它们的张数分别是 c1.c2.-, cn.我们现在要用 ...

  6. 硬币找零问题,动态规划基础,百度面试题

    问题描述:给出几种面值的硬币,要求用这几种硬币找零出所给零钱数,用的硬币数要最少. 过去我们用过贪心法解决此类问题,包括本人在百度面试时,也是用的贪心法(面试官对这个解答不满意),贪心法只适用于硬币特 ...

  7. 硬币找零问题的动态规划实现

    一,问题描述 给定一组硬币数,找出一组最少的硬币数,来找换零钱N. 比如,可用来找零的硬币为: 1.3.4   待找的钱数为 6.用两个面值为3的硬币找零,最少硬币数为2.而不是 4,1,1 因此,总 ...

  8. 动态规划——硬币找零和币值最大化问题

    一.硬币找零问题 1.问题 有面值为1元.3元和5元的硬币若干枚,给定一个输入面额,问如何采用最少的硬币数目,得到当前面额 2.思路 找出状态转移方程,每次可以拿取1元.3元或者5元的硬币,每次拿取, ...

  9. 最少硬币找零系列问题(01背包,完全背包,多重背包动态规划)

    背包问题思路解决最小硬币找零系列问题. 一.01硬币找零问题(01背包) 给定不同面额的硬币 coins 和总金额 m.每个硬币最多选择一次.计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬 ...

最新文章

  1. 前端学习(1751):前端调试值之编辑源并同步到本地文件
  2. 如何禁用计算机的服务,如何彻底禁用电脑中的迅雷服务XLservicePlatform
  3. Tomcat的Session管理(三)
  4. STL和C++标准库
  5. Flutter MaterialApp概述以及主题配置概述
  6. 东财计算机应用基础在线作业一,东财《计算机应用基础》综合作业
  7. [Java] 蓝桥杯ADV-182 算法提高 前10名
  8. linux的前端环境搭建-安装配置git客户端与github连接
  9. nginx反向代理:配置多个应用通过80端口访问(PHP项目)
  10. oracle数据库应用中实现汉字“同音”查询(转)
  11. Windows重装为Linux
  12. Spring Cloud项目是如何读取bootstrap.properties文件的?
  13. 联想y7000笔记如何安装matlab,联想Y7000P笔记本怎样安装win7系统 安装win7系统操作分享...
  14. 微信首页制作代码Android,微信满屏代码
  15. Java简单设计模式
  16. 2:win7 iis7
  17. 美国零售业发展强劲:2019愿景向好?
  18. 有人串口转wifi模块 httpd client通信示例-用户使用网页通过服务器收发串口数据源码 小黄人软件
  19. C++版本OpenCv教程(六)namedWindow函数imshow函数的使用
  20. android 高德地图移动卡顿_高德、百度和腾讯三家比拼,哪个 Android 车机地图 App 更好用?...

热门文章

  1. 龙芯1B:PCA9557用iic扩展口使能蜂鸣器
  2. Linux kill命令原理及源码实现
  3. Spring| AOP之 切点(Pointcut)
  4. Win10 打开开发者模式(develper mode)
  5. C语言 getline函数实现
  6. 计算机基础数制转换教学ppt,计算机基础-数制及其相互转换PPT课件
  7. 算法 - 内部排序方法总结
  8. 奉劝9610的你按时吃饭多运动,不要提早去开发生死簿管理系统
  9. 服务器任务栏换个位置,Win7系统任务栏设置技巧 轻松玩转不求人
  10. 画家百度百科创建应该怎么做呢?