Python 查詢序列的最長遞增子串行

2021-10-23 05:18:37 字數 968 閱讀 3354

什麼是序列的最長遞增子串行?

答:在乙個數值串行中,找到乙個子串行,使得這個子串行元素的數值依次遞增,並且這個子串行的長度盡可能地大。這就是所謂的最長遞增子串行

from itertools import combinations

from random import sample

defsubascendinglist

(arr)

:'''返回最長遞增子串行'''

for length in

range

(len

(arr),0

,-1)

:#按長度遞減的順序進行查詢和判斷

for sub in combinations(arr, length)

:#判斷當前選擇的子串行是否為遞增順序;長度為arr列表的長度遞減,從arr列表中找,然後進行排列組合

iflist

(sub)

==sorted

(sub)

:#找到第乙個就返回;將得到的sub進行公升序排序,若與原來的列表相等,即為遞增的列表最大長度

return sub

'''python itertools模組combinations(iterable, r)方法可以建立乙個迭代器,

返回iterable中所有長度為r的子串行,返回的子串行中的項按輸入iterable中的順序排序。

'''arr=

n=int

(input

("請輸入給定序列的個數:"))

print

("請依次輸入給定序列的值:"

)for i in

range

(n):

int(

input()

))print

("最大遞增子串行為:"

)print

(subascendinglist(arr)

)

最長遞增序列

面試題 17.08.馬戲團人塔 原題鏈結 有個馬戲團正在設計疊羅漢的表演節目,乙個人要站在另一人的肩膀上。出於實際和美觀的考慮,在上面的人要比下面的人矮一點且輕一點。已知馬戲團每個人的身高和體重,請編寫 計算疊羅漢最多能疊幾個人。示例 height.length weight.length 1000...

最長公共子串行 最長遞增子串行 最長遞增公共子串行

求最長公共子串行 int dp maxn maxn int a maxn b maxn int main else dp i j max dp i 1 j dp i j 1 printf d n dp m n return 0 輸出最長公共子串行 int dp maxn maxn int d max...

最長遞增子串行

這是微軟實習生筆試遇到的,題意 求乙個陣列中最長遞增子串行的長度。要求選擇該題最好演算法的時間複雜度和空間複雜度。答案 時間複雜度o nlgn 空間複雜度o n 這題明顯用動態規劃來解。假設在目標陣列array 的前i個元素中,以array i 元素為最大元素的遞增子串行的長度是lis i 那麼 遞...