码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-11-16 14:27:00      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:经典的   注意   htm   []   www.   https   算法   blog   max   

  经典的最长子序列问题,最近编程训练遇到此题苦无思路,在网上找到比较规范的解答,细思两天后还是觉得有点问题,现在整理总结如下:

参照 https://www.cnblogs.com/hapjin/p/5597658.html

1. 问题描述:

给定一个序列,求解它的最长 递增 子序列 的长度。比如: arr[] = {3,1,4,1,5,9,2,6,5}   的最长递增子序列长度为4。即为:1,4,5,9

2.DP算法分析:

按照上述作者的解答  

①最优子问题

设lis[i] 表示索引为 [0...i] 上的数组上的 最长递增子序列。初始时,lis[i]=1,注意,在DP中,初始值是很重要的,它是整个算法运行正确的关键。而初始值 则可以 通过 画一个小的示例来 确定。

当 arr[i] > arr[j],lis[i] = max{lis[j]}+1 ;其中,j 的取值范围为:0,1...i-1

当 arr[i] < arr[j],lis[i] = max{lis[j]} ;其中,j 的取值范围为:0,1...i-1 

================================================================

这里的关键是 理解lis[i] = max{lis[j]} +1,max{lis[j]} 表示到第j个元素且以此元素结尾的最长子序列,所以当arr[i]大于末尾元素时,最长子序列应该加第i个元素;

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

标签:经典的   注意   htm   []   www.   https   算法   blog   max   

原文地址:http://www.cnblogs.com/albertarmstrong/p/7843814.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!