先从一个题目引出动态规划。

有数组 penny,penny 中所有的值都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,给定一个整数 N 表示货币总数,再给定一个整数 aim (小于等于 1000 )代表要找的钱数,求换钱有多少种方法。

给定数组penny及它的大小(小于等于 50 ),同时给定一个整数aim,请返回有多少种方法可以凑成aim。

测试样例:

[1,2,4],3,3

返回:2

本题非常经典,经典之处在于本题可以体现:暴力搜索方法记忆搜索方法动态规划方法之间的关系,并可以在动态规划的基础上进行再一次的优化从而能够帮助大家了解什么是动态规划。

暴力搜索方法

假设:penny = {5, 10, 25, 1}, aim = 1000。
暴力搜索的过程如下:
1、用 0 张 5 元的货币,让 [10, 25, 1] 组成剩下的 1000,最终方法数记为 res1
2、用 1 张 5 元的货币,让 [10, 25, 1] 组成剩下的 995,最终方法数记为 res2
3、用 2 张 5 元的货币,让 [10, 25, 1] 组成剩下的 990,最终方法数记为 res3

201、用 200 张 5 元的货币,让 [10, 25, 1] 组成剩下的 0,最终方法数记为 res201

所以最终总的方法数为 res1 + res2 + res3 +…+ res201。

钱币找零问题 - 动态规划相关推荐

  1. 贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码

    1. 贪心算法概览 贪心算法是一种算法思想.希望能够满足限制的情况下将期望值最大化.比如:Huffman编码,Dijkstra单源最短路径问题,Kruskal最小生成树 等问题都希望满足限制的情况下用 ...

  2. 钱币找零问题---贪心算法入门例题

    2019独角兽企业重金招聘Python工程师标准>>> 笔者近期无意中发现了一篇关于贪心算法的博客,写的真好.作为一名算法萌新,感觉这篇文章来入门真心不错,于是摘记其中一个典型的关于 ...

  3. python 找零问题 动态规划

    题目描述: 现有的钱币:coins=[1,2,5,7,10] 找零:change(假定为正整数) 求解:如何用最少的钱币进行找零 分析:可以使用动态规划 比如找零8元,可以将问题进行分解 dp[8]= ...

  4. python找零_python 找零问题 动态规划

    题目描述: 现有的钱币:coins=[1,2,5,7,10] 找零:change(假定为正整数) 求解:如何用最少的钱币进行找零 分析:可以使用动态规划 比如找零8元,可以将问题进行分解 dp[8]= ...

  5. Java - 初探贪心算法(纸币找零,背包问题)

    贪心算法 1. 什么是贪心算法? 二.贪心算法的基本思路 三.贪心算法适用的问题 四.贪心算法的实现框架 五.贪心策略的选择 六.贪心算法的几个例子 1. 纸币找零问题 2. 背包问题 1. 什么是贪 ...

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

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

  7. 从自动贩卖机找零看Python中的动态规划问题

    原文:http://www.jianshu.com/p/144db81341a3 从自动贩卖机找零看Python中的动态规划问题 问题描述 假设在某国存在[1,x1,x2,x3,...,xn]多种货币 ...

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

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

  9. python 最小硬币数_Python之动态规划(最少硬币数找零)

    完整代码: # 动态规划最少硬币数找零 def dpMakeChange(coinValueList, change, minCoins, coinsUsed): for cents in range ...

最新文章

  1. Zynq ZC702平台 QSPI + eMMC实现
  2. 微软发布了Visual Stduio 2010 RTM版本的虚拟机vhd文件,包含样例和动手实验(免费)...
  3. Android 系统(226)---Android 阿拉伯语适配
  4. Java事务处理全解析(三)——丑陋的案例
  5. 不同数据库限制取前N条记录
  6. HTTP_X_FORWARDED_FOR 和 REMOTE_ADDR 的区别
  7. P2854 [USACO06DEC]Cow Roller Coaster S(DP)
  8. vue根据拼音选择城市better-scroll
  9. 什么是Web全栈工程师
  10. OpenGL和DirectX
  11. 好奇,什么水平才能任教清华计算机系?
  12. mysql源码分析——InnoDB引擎启动分析
  13. sqlserver2014数据导出与导入
  14. 自动生成sitemap地图PHP代码
  15. 心愿,一首校园原创歌曲(附四位女生的照片若干及六线谱)
  16. Java-正则表达式:匹配特定字符开头,数字结尾的任一字符串
  17. VMProtect进行加壳
  18. C# Socket之UDP通信
  19. 思维导图-------java-IO流知识结构梳理
  20. Qt 对 wav 音频文件进行剪切

热门文章

  1. 三级分销会员系统实现原理
  2. CBK发声世界发展论坛首脑峰会启动仪式
  3. 面向对象编程与关系型数据库间的不一致(Object-relational impedance mismatch)
  4. 在PowerBI中查看Excel报表
  5. Javascript 技巧大全
  6. 谷歌浏览器(google)设置翻译中文,翻译选项不生效或没有弹出翻译选项
  7. PTA7-36 电话聊天狂人
  8. 延时1us程序12mhz晶振c语言,51单片机 Keil C 延时程序的简单(晶振12MHz,一个机器周期1us.)...
  9. 深入理解分布式CAP原理
  10. HTTP位于哪一层?GET和POST有什么不同