Я написал код, который даст мне все элементы подмассива, чья сумма максимальна, если элементы взяты из данного массива, так что нет двух соседних элементов.Но для некоторых тестовых случаев это не помогает, в чем заключается ошибка, которую я делаю
global a
a = list(map(int , input().split()))
global DP
global neg_
global sum_seq
sum_seq = [0]*len(a)
def solve(i):
k = 1
a1 = []
b1 = []
while i + 1:
if i == len(a) - 1 or i == len(a) - 2:
if i == len(a) - 1:
a1.append(a[i])
sum_seq[i] = a[i]
if i == len(a) - 2:
if a[i] > sum_seq[i + 1]:
b1.append(a[i])
sum_seq[i] = a[i]
else:
b1.append(a[i+1])
sum_seq[i] = sum_seq[i+1]
else:
if k % 2:
if sum_seq[i + 1] < sum_seq[i+2] + a[i]:
a1.append(a[i])
sum_seq[i] = sum_seq[i+2] + a[i]
k += 1
else:
sum_seq[i] = sum_seq[i+1]
a1.clear()
a1 = b1[:]
k += 1
else:
if sum_seq[i+1] < sum_seq[i+2] + a[i]:
b1.append(a[i])
sum_seq[i] = sum_seq[i+2] + a[i]
k += 1
else:
sum_seq[i] = sum_seq[i+1]
b1.clear()
b1 = a1[:]
k += 1
i -= 1
print(*a1)
print(*b1)
print(sum(a1))
print(sum(b1))
solve(len(a) - 1)
Здесь конечный результат будет максимальным значением суммы a1 или b1.