Dynamic Programming
很有可能使用动态规划的情况:
求最大值最小值
判断是否可行
统计方案个数
不使用动态规划的情况:
求出所有具体的方案而非方案 个数
输入数据是一个 集合 而不是 序列
暴力算法的复杂度已经是多项式级别
动态规划擅长于优化指数级别复杂度(2^n,n!)到多项式级别复杂度(n^2,n^3)
不擅长优化n^3 到n^2
动态规划四要素 vs 递归 三要素
状态 state
灵感 创造力,储存小规模问题的结果
方程 function
状态之间的联系,怎么通过小的状态来算大的状态
初始化 initialization
最极限的小状态是什么,起点
答案
最大的在那个状态是什么 终点
递归三要素
定义(状态)
接受什么参数
做了什么事
返回什么值
拆解(方程)
何如将参数变小
出口(初始化)
什么时候可以直接return
初始化一个二维的动态规划数组时,先初始化第0行 第0列
Last updated