首页 > 其他分享 >动态规划学习笔记

动态规划学习笔记

时间:2023-01-31 22:34:19浏览次数:36  
标签:27 target 硬币 笔记 fun 动态 规划

动态规划

1,什么是动态规划

私以为,动态规划就是在递归思想的基础上,用空间换时间,将已经计算过的结果用存储起来,消除冗余计算,提高算法效率。

2,什么时候使用动态规划

抽象一点来说,当一个问题可以被分为若干个规模更小的子问题,并且子问题中存在很多重复时,可以使用动态规划。

具体来说,以下几种问题可以考虑动态规划:

  1. 计数问题
    • 有多少种方法从网格的左下角走到右下角
    • 有多少种方法选出k个数使其和为sum
  2. 求最大最小值
    • 从网格左上角走到右下角路径的最大数字和
    • 最长上升子序列长度
  3. 求存在性
    • 取石子游戏,先手是否必胜
    • 能不能选出k个数使得和是sum

3,动态规划解题步骤

  1. 确定状态
    • 确定最后一步
    • 化为子问题
  2. 写出转移方程(第一步做完转移方程就自然写出来了)
  3. 确定初始条件(初始条件即为转移方程求不出来,但是又要用到的条件)

现在让我们来实践一下:

例题:
现在有数量不限的2元,5元,7元硬币,要求使用最少数量的硬币拼成27元。
解:
0,该题是求最少数量硬币的组合,因此使用动态规划
1,确定状态
1.1,确定最后一步,设f(x)为拼成x元需要的最少硬币数量
最后一枚硬币可以为2元,5元,7元,因此f(27)可以分别为:f(25)+1,f(22)+1,f(20)+1。
由于所求的是最少数量,因此f(27)=min{f(25)+1,f(22)+1,f(20)+1}。
1.2,化为子问题
子问题即为:要求使用最少数量的硬币拼成i元。
因此f(i)=min{f(i-2)+1,f(i-5)+1,f(i-7)+1}
2,写出状态转移方程
即为上述方程
3,确定初始条件
当i=0时,即0元可以由0枚硬币组成。
当i<0时,此时无法组成这个数量,即令f(i)=无穷
def coinChange():
    target = []
    target[0] = 0
    for i in range(27):
        target[i] = min(fun(i-7),fun(i-5),fun(i-2))+1;
    return target[27]
def fun(i,target):(用来在i<0时返回无穷)
	if i < 0:
        return Integer.Max
    else:
        return target

标签:27,target,硬币,笔记,fun,动态,规划
From: https://www.cnblogs.com/wyh-s/p/17081039.html

相关文章

  • Linux初学笔记
    关于java全栈开发要掌握的技术JavaSEMySQL前端(HTML、CSS、JS)JavaWebSSM框架(可以开始找工作了)SpringboardVueSpringCloudGitLinux关于Linux需要掌握的技术消......
  • 树链剖分学习笔记
    怕到时候忘了,来写一篇笔记前置芝士:树的存储与遍历,\(dfs\)序,线段树。树链剖分的思想及能解决的问题:树链剖分用于将树分割成若干条链的形式,以维护树上路径的信息。具体......
  • Vue动态菜单addRoutes的使用和踩坑事项
    坑一添加route后马上跳转可能出现白屏情况原因分析:还未成功添加就next()跳转,找不到组件解决办法:使用next()传参,在路由守卫beforeEach中持续循环,知道确认已经添加......
  • kubernetes对接NFS动态存储
    存储PK根据不同的场景,可以考虑用Ceph、GlusterFS或NFS来存储Kubernetes数据。Ceph有较强的性能和容错能力,通常适用于中小规模的Kubernetes组件;GlusterFS具有可伸缩性,适用......
  • Elasticsearch 从入门到实践 小册笔记
    MappingJSON中是可以嵌套对象的,保存对象类型可以用object类型,但实际上在ES中会将原JSON文档扁平化存储的。假如作者字段是一个对象,那么可以表示为:{"author":{......
  • 动态树 LCT (Link-Cut-Tree)
    什么是动态树?动态维护⼀个森林,动态的⽀持\(2\)个操作——添加边、删除边的数据结构。它还可以维护树上路径的⼀些信息时间复杂度单独操作:\(logn\)虽然树连剖分的复......
  • [概率论与数理统计]笔记:5.3 置信区间
    5.3置信区间前言点估计无法提供其估计的误差,而区间估计可以。案例:“某人的月薪比2k多,比20k少”,这就是一个区间估计。区间估计的好坏有两个衡量指标:区间长度真实值......
  • esp32笔记[3]-mpu6050
    ██████╗███████╗██████╗██╗██╗███████╗██╔═══██╗██╔════╝██╔══██╗╚██╗██╔╝██╔═══......
  • SpringBoot项目动态定时任务之 ScheduledTaskRegistrar(解决方案一)
    前言​ 在做SpringBoot项目的过程中,有时客户会提出按照指定时间执行一次业务的需求。​ 如果客户需要改动业务的执行时间,即动态地调整定时任务的执行时间,那么可以采用S......
  • HTTP笔记2--HTTP工作协议及原理
     TCP/IPTCP/IP我们一般称之为协议簇,就是TCP/IP协议簇中不仅仅只有TCP协议和IP协议,它是一系列网络通信协议的统称。而其中最核心的两个协议就是TCP/IP协议,其他......