博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态规划初步
阅读量:5249 次
发布时间:2019-06-14

本文共 622 字,大约阅读时间需要 2 分钟。

凑钱问题:

题目:给一个总额amount,以及现有的钱币面值数组coins,要求计算最少需要多少张coins中的钱币才能凑出总额;

动态规划是将大问题转化为小问题,然后一步步求解出最终结果。具体到这道题,我们可以把大问题即凑amount元转化为凑齐amout-1,amount-2等等

当我们计算"凑5元"的时候一定要相信:凑1-4元都已经是最优结果了,同样凑4元要相信凑1-3是最优结果。这便是动态规划的全部:大问题转化为小问题,每次小问题都是最优结果,最终基于这些小问题得到大问题的最优结果,各种dp问题的主要不同是大问题是如何“基于小问题”得出结果的

回到上面的图片中,我们这道题目要求的是计算凑amount所需最少的钱币张数,那凑X元储存的就应该是钱币的张数,所以上面的图片进一步转化

当我们凑5元的时候,由于有3中面值可选,我们不确定选哪个是最佳,所以需要遍历一次。当选面值1RMB时,需要借助子问题凑4元的答案;当选面值2RMB时,需要借助子问题凑3元;选面值3RMB需要借助子问题凑2元,如此得出三个答案(A,B,C),最终计算着三个答案哪个是最优结果,即哪个所需张数最少,并将至存放到dp[5]作为凑5元的最优结果,以上便是动态规划在凑硬币问题上的应用,其实既然都叫思想了很明显凡是大问题依赖小问题解的都可以使用dp求出。

 

转载于:https://www.cnblogs.com/ysherlock/p/7832885.html

你可能感兴趣的文章
Convert.ToInt32、int.Parse(Int32.Parse)、int.TryParse三者之间的区别
查看>>
python 获取本机ip
查看>>
oracle 12.2版本优化情况
查看>>
kindeditor异步加载 无法初始化
查看>>
JSP九大内置对象及四个作用域
查看>>
分别让用户输入用户名和密码,如果用户名不为admin,则提示“用户名不存在”...
查看>>
mysql导入txt文件
查看>>
数据库 T-sql 基础语句
查看>>
中国人创业的四个阶段:同心协力——同床异梦——同室操戈——同归于尽
查看>>
洛谷 P1709 隐藏口令Hidden Password
查看>>
HDU 1698 Just a Hook
查看>>
性能调优攻略
查看>>
给我们的Empty Object加个图标
查看>>
深入理解Java中的String
查看>>
Centos7安装并配置mysql5.6完美教程
查看>>
iOS 锁屏判断
查看>>
NFC身份证识别(二)
查看>>
转载--Typecho install.php 反序列化导致任意代码执行
查看>>
dsoframer组件详细使用(aspx.net)
查看>>
CodeForces 706C Hard problem
查看>>