动态规划
动态规划的做题三步骤为哪三步骤
根据前面算出来的最优解得出后面的最优解
* 确定状态 : 确定求解问题当中,每个子问题顶点的答案和含义
* 划分阶段 : 划分求解问题当中,哪些策略覆盖哪个范围,列清楚
* 确定状态转移方程 : 在某个顶点,适用哪些策略,写成表达式的形式呈现出来,则为状态转移方程。
题目意思
给定一个金字塔,你需要从金字塔顶端走到最底层任意一个顶点,期间每走过一格,都会累加上这个格子的数字,提问走到最底层的时候,最小累加的数字总额为多少?
解法
1. 确定状态
1. 假设dp[i][j]为走到i行j列格子时,累加数值的最小值dp[i][j] 为 走到i行j列格子时,累加数值的最小值dp[i][j]为走到i行j列格子时,累加数值的最小值。
2. 划分阶段
1. 我们将不存在的顶点都分配给一格无限大的数值,这样所有顶点除了起点之外都可以采用上方三个地方下来的数值了。
3. 确定状态转移方程
1. dp[i][j]=min(dp[i−1][j−1],dp[i−1][j−2],dp[i−1][j])+dp[i][j]dp[i][j] = min(dp[i-1][j-1],dp[i-1][j-2],dp[i-1][j]) + dp[i][j]dp[i][j]=min(dp[i−1][j−1],dp[i−1][j−2],dp[i−1][j])+dp[i][j]