- def longest_sub_increase_seq(array):
- #求最长子序列,array为length个数的序列#
- length = len(array)
- x=[1 for i in range(length)] #保存前i个序列的最长数量,每个序列至少长度为1
- z=[0 for i in range(length)] #保存对于第i个数来说,
- for i in range(1,length):
- index=i #记录使x[0..i]递增子序列最长的,倒数第二个位置
- maxnum=1 #递增序列的长度
- for j in range(i):
- if array[i]>array[j]:
- if maxnum<x[j]+1:
- index=j
- maxnum=x[j]+1
- z[i]=index
- x[i]=maxnum
- maxvlaue=max(x)
- return_value=[]
- for i in range(length):
- vv=[]
- if x[i]==maxvlaue:
- j=i
- while z[j]!=j:
- vv.append(array[j])
- j=z[j]
- else:
- vv.append(array[j])
- return_value.append(vv)
- return return_value
- #该片段来自于http://www.codesnippet.cn/detail/041120136894.html
来源: http://www.codesnippet.cn/detail/041120136894.html