动态规划算法

一、动态规划题目特点

1.计数

 

  • 有多少种方式走到右下角
  • 有多少种方法选出k个数使得和是Sum
  • +++

2.求最大最小值

  • 从左上角走到右下角路径的最大数字和
  • 最长上升子序列长度
  • min/max

3.求存在性

  • 取石子游戏,先手是否必胜
  • 能不能选出k个数使得和是Sum
  • or/and

二、动态规划组成部分

1.确定状态

简单的说,解动态规划的时候需要开一个数组,数组的每个元素f[i]或者f[i][j]代表什么。

确定状态需要两个意识

  • 最后一步(最优策略的最后一步)
  • 子问题

2.转移方程

f[X]=min/max{}

3.初始条件和边界条件

初始条件:用转移方程算不出来,需要手工定义。

边界条件:不能让数组越界(上界和下界)。

4.计算顺序

大多数情况都是从小到大计算

二维的话就是从上到下从左到右

确定计算顺序的原则:

当我们计算等式左边的f[X]时,等式右边的f都已经得到了结果。

posted @ 2020-11-17 14:28  哥嫌远儿  阅读(89)  评论(0)    收藏  举报