在我的观点里动态规划的算法思想就是用分而治之的思想去解决冗余最终获得最优解,它所需要解决的问题所分割出的子问题是相互依赖而不是独立的,在解决问题的过程中,会将已经解决的子问题的解进行保存,在需要用的时候可以很快的找到,从而避免进行重复无意义的计算,从而降低时间复杂度。
就拿求第几个斐波那契数的值得例子来说吧,斐波那契数就是除了第一个和第二个数的值为1,第n(n>2)个数的值为第n-1和第n-2的值相加。
按照没有用到动态规划的递归方法来求第n个数的斐波那契数会发现n越大所运行的时间就越久,在求第48个斐波那契数的时候用了大概15秒。
若使用动态规划的递归方法来求第n个数的斐波那契数时会发现,很快结果就出来了,在求第55个斐波那契数的值的时候不到1s结果就出来了。