算法训练4
dfs和分治会有重复的计算,所以复杂度高
可以采用记忆化搜索的方式,保存已经计算过的结果。
记忆化搜索就是动态规划的一种。
动态规划就是解决了重复计算的问题。
动态规划题目特点
1、求最大最小
2、求yes、no
3、求count(*)
不能对原数据进行交换或者排序。
动态规划的四个要素
1、状态,最小规模的问题解决和定义
2、方程,状态之间的联系
3、初始化,第一个数据初始化来得到后面的结果
4、答案,最后状态是什么
动态规划的精髓
当前问题可以分成若干个相同的子问题,解决了子问题就能解决当前的问题。
动态规划都是用来求最优解的。如果要你求解的个数,可能需要搜索每一种可能,那就应该是搜索,dp可能性不大。
如果状态转移无法建立,那么一定是你的状态设置有问题。