#P2142. 抢金块.从后往前看.填空题
抢金块.从后往前看.填空题
题目描述
地面上有一些格子,每个格子上面都有金块,但不同格子上的金块有不同的价值,你一次可以跳 至 步。
例如 ,,你就可以跳 步、3 步或 步。
你从第一个格子起跳,必须跳到最后一个格子上,请你输出最多可以获得的金块的总价值。
输入格式
第 行是格子个数 ();
第 行是 和 ,保证 大于 ();
第 行是每个格子上的金块价值 ()。
输出格式
输出最多可以获得的金块的总价值。如果不能走到第 个格子,输出 0.
样例
10
2 3
4 5 8 2 8 3 6 7 2 9
36
样例解释
跳 1、3、5、8、10 这些位置 ,总价值:4+8+8+7+9=36。
完成程序
#include<bits/stdc++.h>
using namespace std;
int n,dp[1001],x[1001],s,t,ans;
int main()
{
scanf("%d",&n);
scanf("%d%d",&s,&t);
for(int i=1;i<=n;i++)
scanf("%d",&x[i]);
dp[1] = x[1];
for(int i=__填空(1)__;i<n;i++){
if(__填空(2)__) continue; // 能跳到 i 这个格子是前提,否则就不需要从第 i 个格子往后看了
for(int j=__填空(3)__;__填空(4)__;j++)
if(i+j<=n)
dp[i+j] = max(dp[i+j],__填空(5)__);
}
printf("%d",__填空(6)__;);
return 0;
}
填空(1): {{ input(1) }}
填空(2): {{ input(2) }}
填空(3): {{ input(3) }}
填空(4): {{ input(4) }}
填空(5): {{ input(5) }}
填空(6): {{ input(6) }}