1.1、动态规划

用一纬数组记录,如果不行就用二维,大部分是二维。
1、背包问题
01背包:有n件物体,容量为v的背包,使物品价值最大。假设第i件物品价值为c[i],重量为w[i]。dp[i][v]表示前i件物品放入v中的最大价值
dp[i][v] = Math.max(dp[i-1][v], dp[i-1][v-w[i]]+c[i])
完全背包:每件物品可以选无限次
dp[i][v] = Math.max(dp[i-1][v-kw[i]]+kc[i]) 0<k*w[i]<v

2、路径,类似这种矩形


image.png

就是比右一步和下一步

3、斐波那契,一纬数组
一次只能走1步或者2步楼梯,楼梯有n步,问有多少种走法
青蛙跳台阶
dp[n] = dp[n-1] + dp[n-2]

4、最大升序子序列问题
最大子序和
dp数组是以当前arr[i]结尾的最大升序子序列

5、最长公共子序列
编辑距离,以i结尾的字符串a和以j结尾的字符串b
当a[i]===b[j],dp[i][j] = dp[i][j]+1
不等,dp[i][j] =max( dp[i-1][j], dp[i][j-1] )
kmp算法基于这个

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 动态规划 动态规划是一种高性能的牛逼算法,由美国的R.Bellman提出,它是动态就是体现在此算法是基于一个递推公...
    董泽平阅读 4,921评论 0 12
  • 1.01背包 题目描述 有 n 个重量个价值分别为 w_i, v_i 的物品。从这些物品中选出总重量不超过 W 的...
    一只可爱的柠檬树阅读 3,247评论 0 2
  • 看我主页简介免费C++学习资源,视频教程、职业规划、面试详解、学习路线、开发工具 每晚8点直播讲解C++编程技术。...
    编程小世界阅读 4,533评论 0 0
  • 2.3.1 记忆化搜索与动态规划 1. 01背包问题 //// Created by Nathan on 15/...
    Nathanpro阅读 3,311评论 0 1
  • 树形动态规划,顾名思义就是树+DP,先分别回顾一下基本内容吧:动态规划:问题可以分解成若干相互联系的阶段,在每一个...
    Mr_chong阅读 5,392评论 0 2

友情链接更多精彩内容