Python---查找序列的最長遞增子序列

查找序列的最長遞增子序列

什麼是序列的最長遞增子序列?
答:在一個數值序列中,找到一個子序列,使得這個子序列元素的數值依次遞增,並且這個子序列的長度儘可能地大。這就是所謂的最長遞增子序列

from itertools import combinations
from random import sample

def subAscendingList(arr):
    '''返回最長遞增子序列'''
    for length in range(len(arr), 0, -1):#按長度遞減的順序進行查找和判斷
        for sub in combinations(arr, length):#判斷當前選擇的子序列是否爲遞增順序;長度爲arr列表的長度遞減,從arr列表中找,然後進行排列組合
            if list(sub) == sorted(sub):#找到第一個就返回;將得到的sub進行升序排序,若與原來的列表相等,即爲遞增的列表最大長度
                return sub
'''
Python itertools模塊combinations(iterable, r)方法可以創建一個迭代器,
返回iterable中所有長度爲r的子序列,返回的子序列中的項按輸入iterable中的順序排序。
'''

arr=[]
n=int(input("請輸入給定序列的個數:"))
print("請依次輸入給定序列的值:")
for i in range(n):
     arr.append(int(input()))
print("最大遞增子序列爲:")
print(subAscendingList(arr))

效果圖如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章