初学dp心得

从STL到贪心,再到现在的动态规划,可以说动态规划真的让我学的有点蒙,对于一些题目,会做,但是不会用DP,现在还不能熟练的写出状态转移方程,更重要的是,自己宛如一个哺乳期的小孩,做题需要套模板,没有模板做不出题来,我不知道学习算法开始时背模板好不好,用模板确实可以更快的解题,更快的拿出思路。可取而代之的是离不开模板,这对于初学者来说,是还是坏,也不太清楚。像最大公共子序列问题,这个目前能做的方式也只有这一种,最大上升子序列也就这有着一种方法,而对于遇到的题目,就是分析,划归,划归到模板再做题。学习DP也带来了很多压力,大佬们好像什么都会!而我一脸蒙蔽,同样是一起学习,他们都很清晰,这离不开他们的努力。
DP主要就是抓住状态变化,用空间换时间,找出状态与状态之间的关系,即求出状态转移方程,即求解题目的关键。动态规划的常见类型分为如下几种:

  • 矩阵型
  • 序列型
  • 双序列型
  • 划分型
  • 区间型
  • 背包型
  • 状态压缩型
  • 树型
    矩阵型遇到过数字三角形,DP训练A。他们的解法都是每一层都是一个过程。
    序列型,最大上升子序列。
    双序列型,音乐会排队问题。
    状态压缩,最大子矩阵和。
    划分型,区间型,背包型,还没遇到很典型的题。
    写状态转移方程的思路是,划分状态,假设第K-1个状态已经解决,求解第K个状态,并该次求解不能破坏之前已经求解的所有最优解,不要考虑对之后的影响,之后自有办法。而且不能 把动态规划限定为一种算法,他应该是一种求解问题的思想。
原文地址:https://www.cnblogs.com/lunatic-talent/p/12799047.html