LCR 166. 珠宝的最高价值 - 力扣(LeetCode)
因为只能向右或者向下到达(i,j)位置,(i,j)只能通过(i-1,j)和(i,j-1)位置到达。
dp[i][j]表示到达(i,j)位置的所有途径,所以dp[i][j]=dp[i-1][j]+dp[i][j-1]
又因为要求最大价值,gift[i,j]表示为(i,j)位置的价值
所以状态表示更新为:dp[i][j]表示到达(i,j)位置总共的最大价值和。
状态转移方程为:
dp(i,j)=max(dp[i-1][j],dp[i][j-1])+gift[i][j];
状态转移方程表示为:
到达(i,j)位置的总共最大价值=到达(i-1,j)位置的最大价值+到达(i,j-1)位置的最大价值
+(i,j)自身的价值
code
空间优化
思路来源:K神原地修改DP数组
因为dp[i][j]只与dp[i-1][j],dp[i][j-1],gift[i][j]有关系,那么我们可以将原矩阵作为dp数组,在原来的矩阵上进行操作。
即:我们可以不给dp数组开辟空间。
原地修改
思路
code
暴力搜索+记忆化搜索
思路来源:stackoverflow