动态规划学习资料:mooc算法基础
这篇文章主要解决一下问题:
1.我们为什么需要动态规划?
2.什么是动态规划?
3.动态规划能解决哪些问题?
4.动态规划该如何解决问题?
经典例题:
1.数字三角形
2.求最大上升子序列
3.求最长公共子序列
4.求最佳表达式
(后续博客更新)
问题一:为何需要动态规划?
动态规划其实用处十分广泛,在有些问题中,暴力算法是可以得出问题的答案的,但是由于时间复杂度太大,导致程序运行超出时间,这时候可以使用动态规划来节省,如例题中的数字三角形,也就是解决最优化问题。
问题二:什么是动态规划?
动态规划说到底就是一种方法,解决一种问题的方法。而这种方法的特点可以总结为:将问题分解成若干个小问题,然后逐一解决,最后可以由这若干个小问题得出原来问题的解。
问题三:动态规划能解决哪些问题?
能采用动态规划求解的问题的一般要具有3个性质:
(1) 最优化原理:如果问题的最优解所包含的子问题的解也是