3109 体验积分值
经验值:1200
时间限制:1000毫秒
内存限制:128MB
合肥市第34届信息学竞赛(2017年)
不许抄袭,一旦发现,直接清空经验!
题目描述 Description
卡卡西和小朋友们做完了烧脑的数字游戏,决定放松一下,他们来到万达乐园,乐园中有很多的游玩项目,每玩一个项目就能获取一定的体验积分,不同的项目产生不同体验积分,假设乐园所有游乐项目正好排成一排,并且游客们不能游玩任意相邻两个项目,那么卡卡西如何挑选游玩项目,使得这次万达行他能获得最多的体验积分值呢。
输入描述 Input Description
输入 共两行, 第一行是个正整数 n,表示万达乐园的游项目数 。
第 二行是 n个用空格隔开的正整数 ,分别表示每个游乐项目的体验积值 。
输出描述 Output Description
输出只有一个正整数,为最多的体验积分值。
样例输入 Sample Input
输入样例1: 5 3 10 8 20 21 输入样例2: 5 3 17 8 20 21
样例输出 Sample Output
输出样例1: 32 输出样例2: 38
数据范围及提示 Data Size & Hint
样例1说明:
一共 5个游玩项目,卡卡西选择第一、三和第五个游玩,可获得 3+8+21=32的体验积分值。
样例2说明:
一共 5个游玩项目,卡卡西选择第二和第五个游玩,可获得17+21=38的体验积分值。
数据范围 :
5≤n≤1000 ;
1≤每个游玩项目体验积分值≤500
#include<bits/stdc++.h>
using namespace std;
int n,dp[1005],x[1005];
int main(){
cin>>n;
for(int i=1;i<=n;i++){cin>>x[i];
}
dp[1]=x[1];
for(int i=2;i<=n;i++){dp[i]=max(dp[i-2]+x[i],dp[i-1]);
}
cout<<dp[n];
return 0;
}