NC2 不相邻取数


[https://www.nowcoder.com/practice/a2be806a0e5747a088670f5dc62cfa1e?tpId=230&tqId=1832016&ru=/activity/oj&qru=/ta/dynamic-programming/question-ranking]
描述
小红拿到了一个数组。她想取一些不相邻的数,使得取出来的数之和尽可能大。你能帮帮她吗?
输入描述:
第一行输入一个正整数 ,代表数组长度
第二行输入 个正整数 a_ia
i
?
,代表整个数组。
1 \leq n \leq 10^5 , 1\leq a_i \leq 10^91≤n≤10
5
,1≤a
i
?
≤10
9

输出描述:
不相邻的数的最大和。
示例1
输入:
4
2 6 4 1

输出:
7

说明:
取 6 和 1 即可

#include
int main(){
    int n;
    scanf("%d",&n);
    long long a[n];
    long long dp[n];
    for(int i=0;ia[0]?a[1]:a[0];//和最大子数组差不多 只不过是隔着取,所有直接与上一个比不用0
    for(int i=2;idp[i-2]+a[i]?dp[i-1]:dp[i-2]+a[i];
        max=max>dp[i]?max:dp[i];
    }
    printf("%lld",max);
}