
动态规划
文章平均质量分 57
拨云亦见日
乌云总会过去,当太阳出现的时候,你是否做好了准备?
展开
-
按摩师(多状态DP)
解释: 选择 1 号预约、 3 号预约、 5 号预约和 8 号预约,总时长 = 2 + 4 + 3 + 3 = 12。即如果选择了一个预约则相邻的预约就不会被选择到,所以可以跳过一个或者多个预约,只需要最后预约时间最长就行。解释: 选择 1 号预约、 3 号预约和 5 号预约,总时长 = 2 + 9 + 1 = 12。解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。输入: [2,1,4,5,3,1,1,3]输入: [2,7,9,3,1]输入: [1,2,3,1]原创 2025-04-09 11:11:30 · 260 阅读 · 0 评论 -
珠宝的最高价值
注意:珠宝的价值都是大于 0 的。除非这个架子上没有任何珠宝,比如。解题思路还是多开一行一列,初始化为0,表示没有价值的珠宝。为该位置珠宝的价值。现有一个记作二维矩阵。原创 2025-04-04 11:44:55 · 201 阅读 · 0 评论 -
不同路径II
如图,☆处的不同路径数量根据dp方程等于障碍物所在位置的路径总数加上☆上面一个格子的路径总数。由于障碍物处无法到达☆,故障碍物处的路径总数可以设置为0,因此初始化时,我们需要将障碍物处的路径总数设置为0即可。机器人移动的规则相同,则不同路径总数的dp方程仍然为dp[i][j]=dp[i-1][j]+dp[i][j-1]。不过由于网格中增加了障碍物,因此在初始化中需要增加对障碍物所在方格进行初始化。这道题相当于在不同路径I上加入了障碍物,但是解题思路还是类似。返回机器人能够到达右下角的不同路径数量。原创 2025-04-04 11:09:05 · 237 阅读 · 0 评论 -
不同路径I
如果直接使用dp[i][j]=dp[i-1][j]+dp[i][j-1]的话会导致越界问题,例如如上图当i=0,j=0时,方程就变成了dp[0][0]=dp[-1][0]+dp[0][-1],导致了越界。如果终点不在第一行第一列的话直接从dp[1][1]开始遍历计算求解。故只需要将机器人头上的格子设为1(或者将机器人左边的格子设为1),空白处为0。若将整个网格看做一个二维数组dp[n][m],则☆处的位置为dp[i][j],故可得方程:dp[i][j]=dp[i-1][j]+dp[i][j-1]。原创 2025-04-04 10:43:24 · 526 阅读 · 0 评论