动态规划——生成括号(leetcode)

什么是动态规划

动态规划和分治算法有共同点,都是把大问题分成子问题。但是分治算法是分成子问题之后再合并得到最终结果。而动态规划则是算出子问题并保存,使得更大的问题不需要重复计算。
动态规划的精髓就是拆分子问题,减少重复计算

什么问题适合动态规划

一些问题可以将答案穷举出来,并且发现答案有重叠的子问题,所以可以考虑动态规划

步骤

1.选择要保存的内容是什么,比如是高度还是深度
2.找出递推关系,比如用来保存内容的数组是dp[],那么第二步要做的工作就是找出dp[n]与dp[n-1]~dp[0]的关系,就是利用子问题推出更大的问题的答案
3.找出最开始的初始值。
4.写出状态转移方程

你可能感兴趣的:(leetcode,算法,动态规划)