我在理解各种问题的动态编程解决方案时遇到问题,特别是硬币找零问题:

“给定值N,如果我们要N分钱找零,并且我们有无限数量的S = {S1,S2,..,Sm}硬币的供应,我们可以用几种方法进行找零?硬币没关系。

例如,对于N = 4和S = {1,2,3},有四个解:{1,1,1,1},{1,1,2},{2,2},{1, 3}。因此输出应为4。对于N = 10且S

= {2,5,3,6},有五个解:{2,2,2,2,2},{2,2,3,3}, {2,2,6},{2,3,5}和{5,5}。因此输出应为5。”

此问题还有另一个变体,解决方案是满足该数量的最小硬币数量。

这些问题看起来非常相似,但是解决方案却非常 不同 。

进行更改的可能方法的数量:最佳的子结构为 DP(m,n)= DP(m-1,n)+ DP(m,n-Sm)

,其中DP是所有硬币的解数,直至第m个硬币,金额= n。

最小数量的硬币:最优的子结构是 DP [i] = Min {DP [i-d1],DP [i-d2],… DP [i-dn]} + 1

其中,i是总量和d1..dn代表每种硬币面额。

为什么第一个需要二维数组,而第二个需要1-D数组呢?为什么更改方式的最优子结构不是“ DP [i] = DP [i-d1] + DP [i-d2] +

… DP [i-dn] ”,其中DP

[i]是我可以通过硬币获得数量的方法的数量。这对我来说听起来合乎逻辑,但会产生错误的答案。为什么在此问题中需要硬币的第二维,而在最小金额问题中却不需要?

问题链接:

提前致谢。我访问的每个网站仅说明该解决方案的工作原理,而不说明其他解决方案为何不工作。

java动态编程解决分硬币问题,动态编程硬币更改问题相关推荐

  1. jpa多表联查动态_解决 JPA 多表动态查询

    前言 由于公司一直在使用 JPA 作为 ORM 框架,因此分配到需要多表复杂查询或动态查询都很头大.很多人对 JPA 抱有偏见,比如 JPA 只能处理简单的单表查询.下面总结下使用过的几种方法,前几种 ...

  2. linux分文件编程、静态库与动态库

    参考:linux静态库与动态库编程 作者:丶PURSUING 发布时间:2021-02-02 16:51:49 网址:https://blog.csdn.net/weixin_44742824/art ...

  3. 出现字迹模糊迹象_改变迹象:如何使用动态编程解决竞争性编程问题

    出现字迹模糊迹象 by Sachin Malhotra 由Sachin Malhotra 改变迹象:如何使用动态编程解决竞争性编程问题 (Change the signs: how to use dy ...

  4. Eclipse 使用 Maven 构建动态 Web 工程,默认无 java 目录的解决方法

    Eclipse 使用 Maven 构建动态 Web 工程,默认无 java 目录的解决方法 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署 ...

  5. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  6. 使用动态代理解决网站字符集编码问题:(之前通过拦截器)

    使用动态代理解决网站字符集编码问题:(之前通过拦截器) 设计模式: 在软件开发的过程中,遇到相识的问题,将问题的解决方式抽象为模型(套路) 单例模式(静态代码只会执行一次),工厂模式,动态代理,装饰者 ...

  7. java 动态数据源切换,Java+Spring+MyBatis实现多数据源的动态切换

    在实际的项目开发过程中我们经常会遇到一个项目需要使用多个数据源的情况,而多数据源又可分为固定多数据源和动态多数据源两种情况. 固定多数据源是指在项目中需要使用多个数据源,但数据源的个数是确定的,不会改 ...

  8. 动态代理解决网站字符集编码

    1.首先看一个装饰模式解决字符集编码问题 我们使用装饰者对request进行增强,从而使得get和post使用request.getParameter()获得的数据没有乱码: 首先来一个Servlet ...

  9. 地图可视化:零编程,BDP轻松制作动态轨迹地图!

    目录: 1.如何零编程拖拽制作轨迹地图(流向地图) 2.轨迹地图的实际运用 工具:BDP个人版 [零编程,拖拽生成动态轨迹地图] 一直想自己动手制作轨迹地图,奈何不会编程,无意发现了BDP,原来轨迹地 ...

最新文章

  1. SPOJ375(树链剖分)
  2. 线段树 ---- CF452F. Permutation(线段树维护序列Hash)
  3. 某资深互联网人分析:支付宝面临巨大困难,被微信争夺市场,年轻用户流失严重...
  4. ocr中文 java_java 中文ocr
  5. python 学习之 PythonAdvance2
  6. java任何封闭实例都不是java_《java并发编程实战》读书笔记3--对象的组合
  7. SourceTree的基本使用
  8. python怎么验证两个json是不是一样_比较Python中的两个JSON树
  9. 向Ubuntu提供反馈的5种方法
  10. LED计数电路,5输入按键编码器,7段数码管显示驱动集成为LED计数测试电路
  11. oracle11g高可用,oracle11g 搭建DG环境总结
  12. 七代处理器装win7_为啥新电脑没法装windows7系统?解决方法总会有的
  13. mysql修改、删除数据记录
  14. webstorm使用指南
  15. 蛋白质组学与转录组学联合分析
  16. JAVA中apply方法的原理_关于学习java函数式接口Function中的apply方法的一些感悟
  17. 实践 ArcGIS Web 3D
  18. Jenkins自动化构建vue项目然后发布到远程服务器
  19. 多段扰动共享型乌鸦算法-附代码
  20. TensorFlow学习笔记(一)---graph,op,tensor,Session,Variables,Tensorboard

热门文章

  1. R语言ggplot2优雅的绘制环状云雨图
  2. 英语进阶系列-A05-英语升级练习三
  3. 计算机修改人类记忆曲线,遗忘曲线
  4. 华为手机日历的功能大全,赶快来试试
  5. thinkphp5.1使用云之讯
  6. 高效能屌丝创业者的七项习惯
  7. 鲜为人知的Linux命令(3)
  8. 【Spring boot 项目实践】基于Spring boot 的外卖系统
  9. hbase安装启动成功,但是执行命令报错
  10. vue swiper6版本 navigation不起作用小坑