2016-12-01 66 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

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