最长递增自序列是一个用动态规划中的经典问题。
def get_max_increase_sequence(a):
# dp[i] = max{dp[j] | 0<=j<i, a[i]<a[j] } + 1
num=len(a)
dp=[0]*num
for i in xrange(num):
for j in xrange(i):
if a[j]<a[i] and dp[j]>dp[i]:
# a[j]<a[i] means that dp[i] should base on dp[j]
# update dp[j] and select bigger one
dp[i]=dp[j]
dp[i]+=1
return dp
a=[1,2,3,4,0,1]
print get_max_increase_sequence(a)