首页 > 其他分享 >动态规划笔记(一):初识DP

动态规划笔记(一):初识DP

时间:2023-01-14 12:01:28浏览次数:35  
标签:return int 笔记 fib mem 初识 最优 DP

动态规划(DP)

DP问题特征

特征:重叠子问题、最优子结构、无后效性

  1. 重叠子问题:计算大问题需要重复计算小问题,DP可以避免重复计算,代价是消耗更多的空间
  2. 最优子结构:大问题的最优解包含小问题的最优解,小问题的最优解可以推出大问题的最优解
  3. 无后效性:不关心子问题的过程,只关心子问题的结果
以斐波那契数列为例

斐波那契数列递推公式:\(fib(n) = fib(n - 1) + fib( n - 2)\)

  • 递归
int fib(int n)
{
    if (n == 1 || n == 2) return 1;
    return fib(n - 1) + fib(n - 2);
}

时间复杂度为\(O(n^2)\)

  • 自顶向下与记忆化
int mem[N];
int fib(int n)
{
    if (n == 1 || n == 2) return 1;
    if (mem[n]) return mem[n];
    return mem[n] = fib(n - 1) + fib(n - 2);
}

时间复杂度为\(O(n)\)

  • 自底向上制表递推
int dp[N];
int fib(int n)
{
	dp[1] = dp[2] = 1;
	for (int i = 3; i <= n; i ++ ) dp[i] = dp[i - 1] + dp[i - 2];
    return dp[n];
}

时间复杂度为\(O(n)\)

标签:return,int,笔记,fib,mem,初识,最优,DP
From: https://www.cnblogs.com/Panmaru/p/17051526.html

相关文章

  • 随机过程的思维导图和笔记
    简单梳理了一下随机过程前四章的内容,这四章联系还是很紧密的。以第一章为基础,延伸出第二章的多种poisson过程,包括复合、稀释、叠加以及条件分布的poisson过程。第三章应用......
  • Java学习笔记10
    1.抽象类1.1概述​ 没有方法体的方法称为抽象方法。Java语法规定,包含抽象方法的类就是抽象类。抽象方法:没有方法体的方法。抽象类:包含抽象方法的类。1.2abstract......
  • DP7361 是一款立体声六通道线性输出的数模转换器-兼容CS4361
    DP7361是一款立体声六通道线性输出的数模转换器,内含插值滤波器、Multi-Bit数模转换器、模拟输出滤波器,支持主流的音频数据格式。DP7361片上集成线性低通模拟滤波器和四......
  • 圆方树学习笔记
    部分内容参照了OI-wiki定义对于这样的一个无向图,左侧的\({1,2,3}\)和右侧的\({3,4,5}\)分别构成一个点双联通分量。中间的\(3\)号节点就是一个割点。不难发现,点双......
  • 【读书笔记】JS函数式编程指南
    第一章海鸥群可以合并和繁育conjoinbreedvarresult=flock_a.conjoin(flock_c).breed(flock_b).conjoin(flock_a.breed(flock_b)).seagulls;但是由于有内部状态,内......
  • 【luogu CF1707D】Partial Virtual Trees(容斥)(DP)
    PartialVirtualTrees题目链接:luoguCF1707D题目大意给你一棵以1为根的数,问你对于每个长度,有多少个点集序列,第一个点集是全部点,最后一个点集只有1号点,且中间每个点......
  • 数论笔记-整除
    目录整除整除的定义与基本性质素数素数的定义与基本性质素数判定试除法\(kn+i\)法预处理法Miller-Rabin素性测试素数筛法埃氏筛欧拉筛(线性筛)反素数反素数的定义与基本性质......
  • Educational Codeforces Round 110 C(最长连续字串,dp),D(左右子树继承贡献dp)
    C.UnstableString题目大意:给定一个长度为n的字符串且只包括'0','1','?',其中如果一个字串是由01交替组成的则称谓不稳定的,如果碰到'?'则可以将其转化为0/1,求不稳定的......
  • JavaScript学习笔记—对象
    对象中可以存储多个各种类型的数据,对象中存储的数据成为属性添加属性或修改属性值:对象.属性名=属性值读取属性:对象.属性名,如果读取对象中没有的属性返回undefined删......
  • aBiu的笔记汇总
    上车Java8新特性拉取测试代码JUC来源b站狂神说测试代码SpringBootspirng源码大致流程SpringSecurity来源Bilibili黑马程序员视频教程SpringSecurity认证授......