题目描述
地面上有一些格子,每个格子上面都有金块,但不同格子上的金块有不同的价值,你一次可 以跳 S 至 T 步(2≤S<T≤10) 。例如 S=2,T=4,你就可以跳 2 步、3 步或 4 步。你从第一 个格子起跳,必须跳到最后一个格子上,请你输出最多可以获得的金块的总价值。
输入
第 1 行是格子个数 n(n<1000) ;
第 2 行是 S 和 T,保证 T 大于 S(2≤S<T≤10) ;
第 3 行是每个格子上的金块价值 pi(pi<1000) 。
输出
输出最多可以获得的金块的总价值。
样例输入 复制
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 a[1000001],f[1000001],n,m,x;
int main()
{
cin>>x;
cin>>n>>m;
for(int i=1;i<=x;i++)
cin>>a[i];
f[1]=a[1];
for(int i=1;i<=x;i++)
{
for(int j=n;j<=m;j++)
{
if(i>j)
f[i]=max(f[i],f[i-j]+a[i]);
}
}
cout<<f[x];
}