会员专享
请先
登录,登录后可使用今日免费解锁;
开通会员,或
购买
该题目所属题库
,可解锁完整内容。
解题思路
我们在长度为 n 的数组中选择恰好两个互不相交的连续子段,并要求两段之间至少有 1 个未选元素(休息位),目标是两段和的最大值。采用状态机 DP,严格使用 dp[i][1/2/3/4/5] 形式:
dp[i][1]:处理到第 i 个元素(含)后,仍未选择子段的最大和
dp[i][2]:处理到第 i 个元素后,处于第一个子段内的最大和(第一个子段正在累加)
dp[i][3]:处理到第 i 个元素后,处于休息状态的最大和(第一段已结束,当前元素不选,用于保证至少 1 个间隔)
dp[i][4]:处理到第 i 个元素后,处于第二个子段内的最大和(第二个子段正在累加)
dp[i][5]:处理到第 i 个元素后,结束选择的最大和(第二段已结束,后续不再选)
开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写