![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
_好好学习
这个作者很懒,什么都没留下…
展开
-
剑指offer(47):礼物的最大价值
1. 题目描述 2. 题目理解 典型的动态规划问题,直接看状态数组的定义: 状态数组:dp[i][j]表示从起始位置到(i,j)能获得的最大的价值。 状态转移方程:dp[i][j] = grid[i][j] + max( dp[i-1][j], dp[i][j-1] ) 就是,在当前grid[i][j]所能获得的最大价值=上一个位置所能获得的最大价值+当前位置的价值,其中上一个位置可以是在当前位置的正上方,也可以是当前位置的左边。 base case:就是在矩阵的最上一条边和最...原创 2020-08-23 15:11:46 · 101 阅读 · 0 评论 -
剑指offer(46):把数字翻译成字符串
1. 题目描述 2. 题目理解 最先想到的可能是递归,从第一个数字开始翻译,然后判断前两个数字能不能合并一起翻译,然后一直递归下去。用递归的话势必会存在重叠子问题,存在重叠子问题的话,可以用备忘录来进行剪枝。 递归从最大的问题开始自上而下解决问题,我们也可以从最小的子问题开始自下而上解决问题了,这样可以消除重复问题。 重叠子问题想到动态规划,是一个比较顺的思路了,我们从最小的子问题开始,就是从num的最后,对应的是dp[len-1]。 动态规划,状态数组定义:dp[i]表示从num[i]到结尾原创 2020-08-23 14:58:37 · 146 阅读 · 0 评论