问题标题: 酷町堂:3109

0
0
已解决
黄子澄
黄子澄
中级天翼
中级天翼

#include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<iomanip>
using namespace std;
long long n,a[1005],f[1005];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=n;i++){
        for(int j=min(i,2);j<=i;j++){
            f[i]=max(f[i],f[i-j]+a[i]);
        }
    }
    cout<<f[n];
    return 0;
}

80

黄子澄在2020-08-19 13:17:21追加了内容

@王光裕 @包涵宇 @董子墨 

 


0
已采纳
周俊豪
周俊豪
高级光能
高级光能

你的双重循环可以用一重循环来解决

将f[1]赋值a[1]

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

当前状态可以由f[i-1]和f[i-2]+当前积分值的最大值来推出

0
0
0
黄子澄
黄子澄
中级天翼
中级天翼

来人啊!!!来人啊!!!

0
0
0
0
我要回答