
DP
高木同学丶
此人不懒,但是他什么都不想写
展开
-
Leetcode刷题笔记——122. 买卖股票的最佳时机 II【DP】
题目 思路 显然采用DP,难点在于状态转移方程 每天最多只允许持有一支股票,即每天的状态只可能是持有一支股票或未持有,用DP[n][2]记录每天的最大利益,其中dp[i][0]表示第i天未持有股票的最大收益,dp[i][1]表示第i天持有股票的最大收益。 则有,未持有股票时,可能是i-1天就未持有,也可能是第i天卖出去了 持有股票时,可能是i-1天就持有了,也可能是第i天买的: 显然其边界为dp[0][0]=0,dp[0][1]=-prices[0]。 应该从小到大计算收益 代码 class Solu原创 2022-03-02 19:55:02 · 470 阅读 · 0 评论 -
Leetcode刷题笔记——剑指 Offer 47. 礼物的最大价值【DP】
题目 思路 明显的DP题,记忆化搜索。采用贪心会陷入局部最优。 我们需要采用一个二维数组dp[i][j]用于保存i,j这个位置的礼物最大价值,那么对于位置m,n而言,到达它的位置的礼物最大价值要么是从m-1,n过来的,要么是从m,n-1过来的。只需要比较这两个位置的礼物的最大价值,选择较大的那个位置,再加上当前m,n这个位置的礼物价值,就是状态转移方程。 dp[i][j]=max{dp[i-1][j],d[i][j-1]}+grid[i][j]. 其边界条件为左边第一列与上面第一行,因为走到左下角和右上原创 2022-02-24 16:55:12 · 330 阅读 · 0 评论 -
Leetcode刷题笔记——120. 三角形最小路径和【DP】
题目 思路 显然,第i层的最小路径中必定也是第i-1层的最短路径,即这个大问题可以有各个小问题合并求解,采用DP。 DP三个步骤:列出状态转移方程,确定边界,确定计算顺序。 状态转移方程: 使用** dp[i][j] **表示到达矩阵的第i行第j列的最小路径和。 正常情况下:(i,j)这个位置只能由上层的j列或j-1列到达,所以 dp[i][j] = min{dp[i-1][j-1], dp[i-1][j]} + nums[i][j] 特殊位置:处于最左侧的位置只能顺着最左侧下来: dp[i][0] =原创 2021-10-01 19:49:41 · 204 阅读 · 0 评论