题解 | #不相邻取数#

不相邻取数

https://www.nowcoder.com/practice/a2be806a0e5747a088670f5dc62cfa1e

import sys

#for line in sys.stdin:
#    a = line.split()
#   print(int(a[0]) + int(a[1]))

N = int(input())
#注意这里要对输入的数据去掉空格,然后再转化为列表
list1 = list(input().split())
#print(list1)
func = lambda x:int(x)
list1=list(map(func,list1))
#print(N)


#初始化一个dp数组,该数组的长度为list1的长度,数组中元素的长度为2,
#数组用列表的形式初始化
dp =[[0,0] for i in range(len(list1))]
#print(dp)

#初始化dp,dp刚开始dp0可以选,可以不选,选中的话,dp的值为list1中0号元素的值,
#不选中的话,因为没有前面得元素可以选,是第一号元素,所以说为0
#选中dp0
dp[0][0]=list1[0]

#不选中dp0
dp[0][1]=0

#初始化maxsum的值

#maxsum=0

for i in range(1,len(list1)):
    dp[i][0] = dp[i-1][1]+list1[i]
    dp[i][1] = max(dp[i-1][0],dp[i-1][1])
print(max((dp[len(list1)-1][0],dp[len(list1)-1][1])))

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务