动态规划:最长递增子序列

      题目:比如一个序列为: 1 4 6 3 8 5  最长递增子序列为 1 6 8 (或者 1 3 5)

 确定状态转移方程:

dp[i]表示以i结尾的最长递增子序列长度。

所以dp[i]=max(dp[j],j=1..i-1且a[j]<arr[i])+1  意思是最后在前面的递增序列后面,直接加一个arr[i],形成一个新的递增子序列。

最后要得的最长递增子序列长度为: max(dp[k],k=1..i)

 (刚刚自己将dp[i]表示成[0,i]范围的最长递增子序列长度,然后卡住了,无法判断,是否可以在子序列后面加arr[i],因为arr[i]可能比前面的最后一个值大,也可能比最后一个值小)

posted @ 2017-09-04 19:57  cheerupWoo  阅读(116)  评论(0编辑  收藏  举报