首先动态规划问题是一种解决问题的思路,相当求解一个问题,你有很多种可行解,但是你要从所有可行解当中找到一个合适的最优可行解。
那么动态规划问题在解决一个大的比较复杂的问题是,往往会把一个大的问题拆分成若干个子问题,甚至子问题的子问题来求解(类似于分治的思想),而这些子问题并非全部互相独立的,而是你把所有子问题的求解结果都算作一次计算,最后把所有的子问题都输出来得到原始问题的解。
举个例子
拆分问题,用计算机领域常用的方法来理解,可以是一个递归的过程或者迭代的过程就是很好的对问题进行不断拆分求解的过程(有点禁止套娃那味了)。不同的是自顶向下求问题叫递归(记忆存储Memoization),而自底向上求问题叫迭代(表格填充法Tabulation),有点类似与我们现在的迭代开发了。