题解 | #不相邻取数#
不相邻取数
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])))