#先获取输入数据
l=int(input()) #数组长度转换成int类型
nums=list(map(int,input().split())) #一列数字转换成列表
if l<=2:
print(max(nums)) #若数组长度小于等于2,直接返回最大值
else:
#创建dp数组,里面存放满足不相邻条件的最大值
dp=[0]*l
for i in range(l):
#分三种情况处理,遍历第一个数字时,dp里没有数字,因此它本身就是最大值
if i==0:
dp[i]=nums[i]
#第二种:最大值再在dp[i-1]和nums[i]里选一个最大值
if i==1:
dp[i]=max(nums[i],dp[i-1])
#第三种:因为数字已经开始有第三个,满足不相互邻条件了,最大值就在dp[i-1]和dp[i-2]+nums[i]中取最大的
if i>=2:
dp[i]=max(dp[i-1],dp[i-2]+nums[i])
#最终最后一个dp[-1]存放的就必然是一个不相邻的连续数字最大值之和
print(dp[-1])

京公网安备 11010502036488号