Python学习之学校教学(查找出最长的单调自增子序列)

描述:给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱)。例如:给定一个长度为6的数组A{5, 6, 7, 1, 2, 8},则其最长的单调递增子序列为{5,6,7,8},长度为4.

def list(arr):
    length = len(arr)
    m = [0] * length
    for x in range(length - 2, -1, -1):
        for y in range(length - 1, x, -1):
            if arr[x] < arr[y] and m[x] <= m[y]:
                m[x] += 1
        max_value = max(m)
        result = []
        for i in range(length):
            if m[i] == max_value:
                result.append(arr[i])
                max_value -= 1
    return result
arr = [10, 22, 9, 33, 21, 50, 41, 60, 80]
print(list(arr))

版权声明:本文为qq_44789425原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。