7.10 动态规划

1 minute read

坐标型动态规划

单序列动态规划

双序列动态规划

划分型动态规划

背包型动态规划

  • 特点: 1). 用值作为DP维度, 2). DP过程就是填写矩阵, 3). 可以滚动数组优化
  • 状态: f[i][S]前i个物品, 取出一些能否组成和为S; 方程: f[i][S] = f[i-1][S-a[i]] or f[i-1][S]; 初始化: f[i][0]=true; f[0][1…target]=false; 答案: 检查所有f[n][j]

  • Backpack

  • Backpack II

  • Minimum Adjustment Cost

  • K sum

区间型动态规划

  • 特点: 1). 求一段区间的解max/min/count; 2). 转移方程通过区间更新; 3). 从大到小的更新; 这种题目共性就是区间最后求[0, n-1]这样一个区间逆向思维分析, 从大到小就能迎刃而解

  • Stone Game

  • Burst Balloons

  • Scramble String

博弈型动态规划

  • 状态: 定义一个人的状态; 方程: 考虑两个人的状态做状态更新; 初始化: 暂无; 答案: 先思考最小状态, 再思考大的状态 -> 往小的递推, 适合记忆话搜索
  • 动态规划, 循环(从小到大递推), 记忆化搜索(从大到小搜索, 画搜索树); 什么时候 用记忆化搜索: 1). 状态转移特别麻烦, 不是顺序性, 2). 初始化状态不是很容易找到; 题目类型: 1). 博弈类问题, 2). 区间类问题; 适合解决题目: 1). 状态特别复杂, 2). 不好初始化

  • Coins in a Line

  • Coins in a Line II

  • Coins in a Line III

参考