欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python 遞增子列

在計(jì)算機(jī)科學(xué)中,遞增子列是從給定的序列中選擇一些元素,使它們保持相對(duì)大小關(guān)系,即前一個(gè)元素小于后一個(gè)元素。在 Python 中,我們可以使用動(dòng)態(tài)規(guī)劃來(lái)找出一個(gè)序列的所有遞增子列。

def find_increasing_subsequence(seq):
"""
找出一個(gè)序列的所有遞增子列
"""
n = len(seq)
dp = [1] * n   # dp[i] 表示以seq[i]為結(jié)尾的遞增子列的長(zhǎng)度
for i in range(1, n):
for j in range(i):
if seq[j]< seq[i]:
dp[i] = max(dp[i], dp[j] + 1)
max_len = max(dp)  # 最長(zhǎng)的遞增子列的長(zhǎng)度
res = []
for i in range(n):
if dp[i] == max_len:
res.append(seq[i])
max_len -= 1
res.reverse()  # 逆序輸出
return res

在上面的代碼中,我們使用 dp 數(shù)組來(lái)記錄以每個(gè)元素為結(jié)尾的遞增子列的長(zhǎng)度,然后使用兩重循環(huán)來(lái)更新 dp 數(shù)組。最后,我們使用最長(zhǎng)的遞增子列的長(zhǎng)度倒序遍歷 dp 數(shù)組,將所有滿足條件的元素加入到結(jié)果列表中。

我們可以運(yùn)行下面的代碼來(lái)測(cè)試我們的函數(shù):

seq = [10, 9, 2, 5, 3, 7, 101, 18]
print(find_increasing_subsequence(seq))  # 輸出 [2, 3, 7, 101]

上面的代碼中,我們定義了一個(gè)序列 seq,并使用函數(shù) find_increasing_subsequence 來(lái)找出它的所有遞增子列。由于 seq 的最長(zhǎng)遞增子列是 [2, 3, 7, 101],因此該函數(shù)的輸出結(jié)果也應(yīng)該是 [2, 3, 7, 101]。