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);
}