首页 > 其他分享 >对于动态规划的感悟

对于动态规划的感悟

时间:2024-04-08 20:35:00浏览次数:22  
标签:感悟 背包 weight 递推 问题 物品 动态 规划 dp

1.明确定义的dp数组的含义

2.找到递推公式

在递推公式中我有以下总结

一、斐波那契数列,爬楼梯的递推公式为dp[i]=dp[i-1]+dp[i+2],种类问题

二、不同路径问题:规定走的方向,dp[i][j]=dp[i][j-1]+dp[j-1][i](左下)

三、整数拆分,dp[i]=j*dp[i-j]初始化dp[2]=1,第一层for循环从i=3开始j从1开始j<i

四、不同的二叉搜索树,dp[i]+=dp[j-1]*dp[i-j]左子树*右子树从j=1到i累加

五、0-1背包dp[j]=max(dp[j-weight[i]]+value[i],dp[j]);先物品,后背包且背包倒叙(保证了每次加一次物品),,,有类似的问题分割等和子集,最后一块石头相撞,

装满背包有多少种方法dp[j]+=dp[j-nums[i]];dp[0]=1;

升级版(两个维度)一和零(10,001,01)要求装满i个1与j个0的容器最多的子集数  这里定义dp[i][j]表示装i与j的最多个数0-1背包问题

dp[i][j]=max(dp[i][j],dp[i-w0[x]][j-w1[j]]+1);先物品,后背包,倒叙背包

六、完全背包问题,可以多次放入物品,这里使用先物品后背包,在背包中使用正序遍历for(int j=weight[i],j<backge;j++)

模拟重量为一的放入次序可以理解

这里的例题为零钱兑换(1,2,3)兑换为5,这里没有强调顺序,可以多次使用,就是一个完全背包问题,则dp[j]+=dp[j-nums[i]]顺序为先物品后背包(组合问题)

 

 

 

3.初始化

4.遍历顺序

5.打印检查

今天先总结到这里

 

标签:感悟,背包,weight,递推,问题,物品,动态,规划,dp
From: https://www.cnblogs.com/zhangmingmkzj/p/18122479

相关文章

  • 问题:试说明指令包含(静态包含)和标签包含(动态包含)的相同点不同点,及各自的缺点
    指令包含(静态包含)和标签包含(动态包含)的相同点:都是可以将外部资源(如JSP文件、HTML文件等)的内容包含到当前JSP页面中。不同点:1、包含时机:指令包含在JSP页面被转换成Servlet时发生,属于编译时包含。被包含的文件内容会直接插入到生成的Servlet源代码中。而标签包含在运行时发生,每次请......
  • 动态规划 && 背包问题
    动态规划前置知识:搜索、贪心、递归以及递推。  在同学们学习动态规划之前,请同学们先掌握基础的搜索以及递归和递推,这对我们学习动态规划有着很好的作用。注意学习动态规划与贪心的区别,所以需要同学们熟悉简单贪心算法。引入:  相信在还没有学习动态规划之前,很多同学已经......
  • C语言进阶之动态内存管理【概念篇】
    前言:我们知道C语言是一门接触底层的语言,其核心用法之一就是对内存的操作,本篇将就详细介绍C语言中是如何灵活开辟内存空间的以及如何管理使用这些空间等等。一.为什么要引入动态内存管理 ? 在C语言中我们目前已经掌握两种开辟内存空间的方式:1.intdata=10;//在栈(stack)空......
  • 动态规划之滚动数组
    熟悉动态规划的童鞋都知道,dp的状态方程通常都是二维数组及以上。我们总将其定义为dp[N][C],例如intdp[N][C],N=10^6,C=10^6,此时空间消耗为4*N*C=4×10^12,很大可能超过比赛中题目对空间的限制。那么我们是否可以优化它呢?拿背包问题举例,我们通常将行范围定为物品个数,每处理当前......
  • 动态规划和层次遍历 —— [NOIP2002 普及组] 过河卒
    题目如下:[NOIP2002普及组]过河卒题目描述棋盘上AAA点有一个过河卒,需要走到目标BB......
  • 算法打卡day37|动态规划篇05| Leetcode1049.最后一块石头的重量II、494.目标和、474.
    算法题Leetcode1049.最后一块石头的重量II题目链接:1049.最后一块石头的重量II 大佬视频讲解:最后一块石头的重量II视频讲解 个人思路和昨天的分割等和子集有些相像,这道题也是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成01背包问题了。解法......
  • 动态内存管理
    目录1.为什么要有动态内存分配.2.动态内存分配的优点3.malloc和free3.1malloc3.2free4.calloc和realloc4.1calloc4.2realloc5.常见的动态内存的错误5.1对NULL指针的解引用操作5.2对动态开辟空间的越界访问5.3对非动态开辟内存使用free释放5.4使用free释放一块动态......
  • 地址治理-标准地址库动态更新ETL方案设计
    一个高质量的地址治理项目,背后必然有一份高质量的标准地址库。但是标准地址库的建设工作大量依赖人工作业,由此遗留下3大问题。首先,人工作业很多都是通过一个小区或者一个街道的扫雷式建设地址库,作业量非常大,成本非常高。关键是会产生大量项目中实际不会用到的地址。其次,人工作业......
  • Spring Data JPA应用之动态查询JpaSpecificationExecutor
    JPA提供了基于准则查询的方式即Criterial查询——Specification接口。该接口定义了一个toPredicate方法用例构造查询条件。在SpringBoot对SpringDataJPA的支持案例的基础上对该接口实操进行探讨。1)数据访问接口必须实现JpaSpecificationExecutor......
  • 【算法每日一练]-动态规划(保姆级教程 篇17 状态压缩)
     目录今日知识点:把状态压缩成j,dp每行i的布置状态,从i-1和i-2行进行不断转移把状态压缩成j,dp每行i的布置状态,从i-1行进行状态匹配,然后枚举国王数转移 POJ1185:炮兵阵地思路:题目:互不侵犯思路:                 POJ1185:炮兵阵地在N*M(N<100,M<10)......