地砖排成一条直线,编号 1 到 n,人一开始在地宫外的 0 号位置。每一回合只能向前跳 1、2 或 3 块,落到哪块就拿走那块的财宝。必须在 m 回合内到达第 n 块,否则输出 −1。
用动态规划。设 dp[t][i] 表示恰好用 t 个回合走到第 i 块地砖时,能拿到的最大财宝。起点:dp[0][0]=0。
小明正在挑战一款地宫探宝游戏。地宫中的地砖沿一条直线排列,每块地砖上均放置着价值不同的财宝。
游戏进行过程中,每个回合小明只能选择以下三种移动方式之一:
地宫即将坍塌,所以需要在指定回合数以内之前离开地宫,并尽可能携带更多财宝。
游戏规则如下:
约束条件
5 到 10000。2 到 5000。0 到 5 的整数。第一行包含两个整数 n 和 m,分别表示地砖数量和回合数上限。
第二行包含 n 个整数,按地砖编号 1 到 n 的顺序给出每块地砖上的财宝价值,整数之间用空格分隔。
输出一个整数,表示在成功逃离地宫的情况下可以获得的财宝总价值最大值;如果无法逃离,输出 -1。
输入
5 2
1 2 3 4 5
输出
8
说明
共有 5 块地砖,最多 2 个回合。从 0 到 5 的总前进距离为 5。
两回合每回合可走 1、2 或 3 格,能凑成 5 的组合只有 2+3 和 3+2。
若第一回合走 2 格到位置 2,第二回合走 3 格到位置 5,拾取价值为 2+5=7。
若第一回合走 3 格到位置 3,第二回合走 2 格到位置 5,拾取价值为 3+5=8。
因此最大总价值为 8。
输入
10 3
1 2 3 4 5 4 3 2 1 0
输出
-1
说明
共有 10 块地砖,最多 3 个回合。每回合最多前进 3 格,所以 3 个回合最多前进 3×3=9 格。
由于 9 小于目标位置 10,即使每回合都走最大步长也无法到达位置 10,因此无法逃离,输出 -1。
输入
6 4
0 5 5 0 0 1
输出
11
说明
共有 6 块地砖,最多 4 个回合。需要从 0 到达 6。
一种可行落脚序列为 0→1→2→3→6,步长依次为 1,1,1,3,拾取地砖编号为 1、2、3、6,价值和为 0+5+5+1=11。
在所有可行路径中,这是能够取得的最大值,因此输出 11。
输入
5 10
1 1 1 1 5
输出
9
说明
共有 5 块地砖,最多 10 个回合。由于回合数足够多,可以每回合只前进 1 格,依次经过位置 1、2、3、4、5。
这样能够拾取所有地砖,总价值为 1+1+1+1+5=9,因此输出 9。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册