排序算法
归并排序
二分查找算法
快速排序算法
BFPRT(线性查找算法)
DFS(深度优先搜索)
BFS(广度优先搜索)
BFS(广度优先搜索)
Dijkstra算法
动态规划算法
朴素贝叶斯分类算法

动态规划

介绍:(英语:Dynamic programming,DP)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。
动态规划问题满足三大重要性质
最优子结构性质:如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题为最优子结构性质(即满足最优化原理)。最优子结构问题为动态规划算法解决问题提供了重要线索。
子问题重叠性质:子问题重叠性质是指在用递归算法自顶向下对问题进行求解时,每次产生的子问题并不总是新问题,有些子问题会被重复计算多次。动态规划算法正是利用了这种子问题的重叠性质。对每一个子问题只计算一次,然后将计算结果保存在一个表格中,当再次需要计算已经计算过的子问题时,只是在表格中简单的查看一下结果,从而获得较高的效率。
无后效性:将各阶段按照一定的次序排列好后,对于某个给定的阶段状态,它以前各阶段的状态无法直接影响他未来的决策,而只能通过当前的这个状态。换句话说,每个状态都是过去历史的一个完整总结。这就是无后向性,又称为无后效性。

动态规划分类有很多划分方法,网上有很多是按照状态来分,分为一维、二维、区间、树形等等。我觉得还是按功能即解决的问题的类型以及难易程度来分比较好,下面按照我自己的理解和归纳,把动态规划的分类如下:
一、简单基础dp
主要包括递推、背包、LIS(最长递增子序列),LCS(最长公共子序列)
1、递推
递推一般形式比较单一
博客网址:
https://blog.csdn.net/cc_again/article/details/25866971?spm=1001.2014.3001.5502