注:全文参考正月点灯笼b站up主!!
1、求数组内不相邻数的最大和。
arr = [1,2,4,1,7,8,3]
def ret_opt(arr, i):
if i == 0:
return arr[0]
elif i == 1:
return max(arr[0], arr[1])
else:
A = ret_opt(arr, i-2) + arr[i]
B = ret_opt(arr, i-1)
return max(A,B)
def dp_opt(arr):
opt = [1] * len(arr)
if len(arr) == 0:
return arr[0]
elif len(arr) == 1:
return max(arr[0], arr[1])
else:
opt[0] = arr[0]
opt[1] = max(arr[0], arr[1])
for i in range(2,len(arr)):
A = opt[i-2] + arr[i]
B = opt[i-1]
opt[i] = max(A,B)
return opt[-1]
ret = ret