一、动态规划 Dynamic Programming
wiki释意:Simplifying a complicated problem by breaking it down into simpler subproblems
二、动态规划与递归、分治的区别
1、动态规划和递归或者分治没有更本上的区别(关键看有无最优子结构)
共性:找到重复子问题
差异性:最优子结构、中途可以淘汰次优解
三、动态规划要点
1、最优子结构 opt[n] = best_of(opt[n-1],opt[n-2],...)
2、储存中间状态:opt[i]
3、递推公式:状态转移方程或者DP方程
fib:opt[i]=opt[i-1]+opt[i-2]
二维路径:dp[i][j]=dp[i-1][j]+dp[i][j-1](且判断a[i,j]是否空地)