描述:给定一个长度为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版权协议,转载请附上原文出处链接和本声明。