2016-12-01 9 views
-1

В настоящее время у меня есть этот кусок кода, который работает путем извлечения суб последовательность целых чисел, которые идут в порядке возрастания по наибольшей длиныизвлечение суб-последовательность целых чисел

def sequence(n): 

    longSeq = [] 
    curSeq = [] 

    for i in range(len(n)): 
    if i < len(n) - 1 and n[i] <= n[i+1]: 
     curSeq.append(n[i]) 

    else: 
     curSeq.append(n[i]) 

     if len(curSeq) > len(longSeq): 

     longSeq = curSeq 
     curSeq = [] 

    print ('Longest sub-sequence of maxiumum length of integers is: ', longSeq) 


sequence([1,2,4,1,2,3,2,4,7,8,10,12,1,3,4,5,6,7]) 

Однако, когда у меня есть два суб- последовательности по возрастанию, которые имеют одинаковую длину, они будут печатать только 1, как это изменить, так что если есть две подпоследовательности одинаковой длины, они будут печатать оба? Любая помощь приветствуется

Так что, когда я запускаю его я получаю

Серия суб-последовательность максимальной длины целых чисел: [2, 4, 7, 8, 10, 12]

+1

Неоптимальным, но работающим подходом было бы разделить его на две отдельные задачи. Сначала рассмотрим самую длинную подпоследовательность. Затем найдите и распечатайте все подпоследовательности этой длины. –

ответ

0

есть цикл который находит все последовательности, отслеживает длину самой длинной последовательности, а затем возвращает все последовательности этой длины.

def long_sequences(n): 
    long_sequences = [] 
    cur_sequence = [] 
    longest_sequence = 0 
    for ind, val in enumerate(n): 
     cur_sequence.append(val) 
     if ind < len(n)-1 and val >= n[ind+1]: 
      long_sequences.append(cur_sequence) 
      longest_sequence = max(longest_sequence, len(cur_sequence)) 
      cur_sequence = [] 
    long_sequences.append(cur_sequence) # to grab last one 
    longest_sequence = max(longest_sequence, len(cur_sequence)) 
    return [seq for seq in long_sequences if len(seq) == longest_sequence] 

>>> long_sequences([1,2,4,1,2,3,2,4,7,8,10,12,1,3,4,5,6,7]) 
[[2, 4, 7, 8, 10, 12], [1, 3, 4, 5, 6, 7]] 
+0

Спасибо, но как бы получить функцию для печати после ее запуска без вызова функции? Например, добавив функцию печати, но я пытаюсь выяснить, где я ее вставляю – PeterMikel

+0

'print (long_sequences ([1,2,4,1,2,3,2,4,7,8,10,12,1, 3,4,5,6,7])) ' – Billy