簡體   English   中英

Python中最長遞增子序列的錯誤

[英]Error in Longest Increasing Subsequence in Python

我試圖通過參考此處的視頻來實現Python中最長的遞增子序列

我想我做對了。 對我來說,代碼的空運行也很好。 但是輸出不正確。

d = [3, 2, 6, 4, 5, 1]
l = []
l.append([d[0]])

for i in range(1, len(d)):
    l.append([])
    for j in range(0, i):
        if d[j] < d[i] and len(l[i]) < len(l[j]) + 1:
            l[i] = l[j]
    l[i].append(d[i])

print(l)

預期輸出: [[3], [2], [2, 6], [2, 4], [2, 4, 5], [1]]

實際輸出: [[3], [2, 6, 4, 5], [2, 6, 4, 5], [2, 6, 4, 5], [2, 6, 4, 5], [1]]

任何幫助,將不勝感激!

這只是另一個參考問題。

for i in range(1, len(d)):
    l.append([])
    for j in range(0, i):
        if d[j] < d[i] and len(l[i]) < len(l[j]) + 1:
            l[i] = l[j]
    l[i].append(d[i])

注意行l[i] = l[j] ,使l[i]l[j] ,因此,當您以后修改l[i]l[j]將被修改。 您可能在這里想要一份副本:

l[i] = l[j][:]
l[i] = list(l[j])
l[i] = l[j].copy()  # Python 3.3 or up

這3條線是等效的,因此請選擇一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM