问题标题: 酷町堂:3109 体验积分值 题目描述 Description 卡卡西和小朋友们做完了烧脑的数字游戏,决定放松一下,他们来到万达乐园,乐园中有很多的游玩项目,每玩一个项目就能获取一定的体验积分,不同的项目产生不同体验积分,假设乐园所有游乐项目正好排成一排,并且游客们不能游玩任意相邻两个项目,那么卡卡西如何挑选游玩项目,使得这次万达行他能获得最多的体验积分值呢。 输入描述 Input Description 输入 共两行, 第一行是个正整数 n,表示万达乐园的游项目数 。 第 二行是 n个用空格隔开的正整数 ,分别表示每个游乐项目的体验积值 。 输出描述 Output Descrip

0
0
已解决
被禁言 李彦伯
李彦伯
修练者
修练者

3109   体验积分值

题目描述 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


0
已采纳
董子墨
董子墨
中级天翼
中级天翼

动态规划

状态:f[i]:玩前i个项目能获得的最大体验积分 
边界:f[0]:0   f[1]=a[1]
状态转移方程:f[i]=max(f[i-2]+a[i],f[i-1])
目标:f[n] 
2
毛润宇
毛润宇
新手天翼
新手天翼

先不回答你这个题目,我先自己写一下,只是想问:你头像呢?

0
0
王一帆
王一帆
中级守护
中级守护

你为什么要问两个同样的问题?

0
包涵宇
包涵宇
中级天翼
中级天翼

李彦伯  你好!!!

这题要用动态规划

首先定义下面几个数:

int a[10001],s[100000],n;

然后输入n和a数组:

cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];

再将s[0]至为0,s[1]至为a[1]:

s[1]=a[1];
s[0]=0;

随后从第2个数进行推算

for(int i=2;i<=n;i++) 
s[i]=max(s[i-2]+a[i],s[i-1]);

最后输出s[n]即可AC;

望采纳!!!

我要回答