Все элементы подмассива, чья сумма максимальна, где элементы взяты из данного массива так, что нет двух соседних элементов? - PullRequest
0 голосов
/ 14 мая 2018

Я написал код, который даст мне все элементы подмассива, чья сумма максимальна, если элементы взяты из данного массива, так что нет двух соседних элементов.Но для некоторых тестовых случаев это не помогает, в чем заключается ошибка, которую я делаю

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...