我有一个代码可以找到列表的所有循环,例如 [1,2,3] 循环是 [1,2,3], [2,3,1], [3,1, 2].我还有一个用于查找最长递增子序列的代码。
我想做的是输入一个列表,找到该列表每个循环的最长递增子序列,然后返回所有这些中的最大长度。我如何从这两个函数找到每个循环的 LIS,然后返回最大值?
到目前为止,这是我的代码:
def cycles(X):
n = len(X)
values = []
for i in range(0,n):
values.append(X[i:n] + X[0:i])
return values
def longest_increasing_subsequence(d):
l = []
for i in range(len(d)):
l.append(max([l[j] for j in range(i) if l[j][-1] < d[i]] or [[]], key=len) + [d[i]])
return len(max(l, key=len))
如果有任何帮助,我将不胜感激。谢谢。
最佳答案
这将完成工作:
l=[1,2,3,4]
s=cycles(l)
lis=[longest_increasing_subsequence(d) for d in s]
print(lis)
print(max(lis))
结果是
[4,3,2,3]
和
4
关于python - 最长递增序列的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43166358/