算法类型:线性动态规划(两状态)
把每关看成一个点,从 1 号关卡出发每次只能向前走 1 关或 2 关,且不能连续两次走 2 关,要求恰好走到第 n 关并最大化经过关卡分值之和。这是一个典型的、带"上一次走了几关"记忆的路径 DP:
last1[i]:上一步走 1 关到达第 i+1 关时,能够得到的最大累加总分;last2[i]:上一步走 2 关到达第 i+1 关时,能够得到的最大累加总分。山路一共设有 n 个关卡,按 1∼n 顺序排列。当前位于 1 号关卡,必须按照关卡从小到大闯关,且必须到达最后第 n 号关卡才算寻宝成功。每个关卡都有对应的宝藏分值(可能为负数),经过当前关卡即可获得该关卡分值,分数持续累加。
移动规则:
请求出:所有合法路线中,能够收集到的最大累加总分。
参数1:整数 n,代表关卡数量
参数2:整数数组,依次表示第 1∼n 关的宝藏分值
1≤n≤20
每关分值:−999≤val≤999
输出一个整数,代表合法路线的最大累加得分。
输入
5,[10,5,8,3,15]
输出
41
说明
输入
4,[10,1,1,100]
输出
112
说明
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册