Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 6, 2018 03:19:37

RatiborMur
Зарегистрирован: 2018-04-15
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Наибольшая возростающая подпоследовательность.

Реализовал так:

 def lis(A):
    F = [0]*(len(A))
    for i in range(1, len(A)):
        m = 1
        for j in range(0, i):
            if A[i] > A[j] and F[j] > m:
                m = F[j]
        F[i] = m + 1
    # print('F = '+str(F))
    return F[-1]
A=[1,3,0,5,2]
print('A = '+str(A))
print('The largest increasing subsequence '+str(lis(A)))
Но, достоверно, не пойму, правильный результат выдает или нет. Подскажите кто разбирается! Спасибо!

Офлайн

#2 Сен. 6, 2018 07:04:07

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Наибольшая возростающая подпоследовательность.

Не так это надо делать. Нужно сделать переменную “индекс_наибольшей”, переменную “длина_наибольшей” и потом сделать один цикл, который эти две переменные перезаписывает, когда это требуется. В конце в них останется индекс наибольшей подпоследовательности и её длина.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version