第1题 跳房子
跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一。 跳房子的游戏规则如下:
在地面上确定一个起点,然后在起点右侧画n 个格子,这些格子都在同一条直线上。每 个格子内有一个数字(整数),表示到达这个格子能得到的分数。玩家第一次从起点开始向 右跳,跳到起点右侧的一个格子内。第二次再从当前位置继续向右跳,依此类推。规定: 玩家每次都必须跳到当前位置右侧的某个格子内。玩家到达某格子时,获得的分数为曾经到达过的格子中的数字之和。
现在小R 研发了一款弹跳机器人来参加这个游戏。但是这个机器人有一个非常严重的缺陷,它每次向右弹跳的距离最多为d。他的机器人每次可以选择向右弹跳的距离为1,2,3,…,d。
现在小R 希望跳到最后格获得最高分数。
输入格式 第1行:2个正整数N和d,范围[2,1000]。
第2行N个整数,每个整数范围[-100,100]。
本蒟蒻的代码
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[1005],f[1005];
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
f[1]=a[1];
for(int i=2;i<=n;i++)
{
int p=-1000;
for(int j=max(1,i-m);j<i;j++)
{
p=max(f[j],p);
}
f[i]=a[i]+p;
}
cout<<f[n];
return 0;
}