数组中最长递增子序列
来源:互联网 发布:罗塞塔石碑软件下载 编辑:程序博客网 时间:2024/06/07 03:57
数组是乱序的,如1,-1,2,-3,4,-5,6,-7
根据无后效性定义,数组中当前元素所形成的子序列与其前面元素形成的子序列没有关系,所以:
LIS[i+1] = max(1,LIS[k]+1),其中,array[i+1] > arry[k],且任意k<=i
LIS[i]存储对于当前数组arry[i]形成的最长子序列的长度值,若arry[i+1]>arry[k],那么第i+1个元素可以接在LIS[k]长的子序列后面+1构成一个更长的子序列,k是0~i之间的任意值。还要注意:LIS[K]的长度并不一定大于LIS[K-1]的长度(LIS[3]=1 < LIS[2]=2)。
代码如下:
/求数组中最长递增子序列int LIS(vector<int> data){ if(data.empty()) return -1; int length = data.size(); vector<int> lis(length,0); for(int i = 0;i < length;++i) { lis[i] = 1;//每一个i长度至少为1 for(int j =0;j < i;++j) { if(data[i] > data[j] && lis[j] + 1 > lis[i])//lis[j]最终会取lis[j]中的最大值+1 lis[i] = lis[j] + 1; } } int num = 0; for(int i = 0;i < length;++i) { if(lis[i] > num) num = lis[i]; } return num;}
0 0
- 求数组中最长递增子序列
- 数组中最长递增子序列-java
- 求数组中最长递增子序列
- 数组中最长递增子序列
- 求数组中最长递增子序列
- 求数组中最长递增子序列
- 数组中最长递增子序列
- 求数组中最长递增子序列
- 求数组中最长递增子序列
- 求数组中最长递增子序列
- 求数组中最长递增子序列
- 求数组中最长递增子序列
- 求数组中最长递增子序列
- 求数组中最长递增子序列
- 求数组中最长递增子序列
- 求数组中最长递增子序列
- 求数组中最长递增子序列
- 求数组中最长递增子序列
- Windows下Eigen配置及测试
- iOS 卡片转场动画 Swift
- 在eclipse中使用subclipse
- hdu 2430 优先队列/线段树
- Expedition
- 数组中最长递增子序列
- istanbul cover _mocha命令出错
- android国际化(多语言)
- 记一次Marathon被黑过程
- TOJ 1407. Paths on a Grid(组合数)
- leetcode 121. Best Time to Buy and Sell Stock
- Git查看工程的分支
- AndroidStudio用微信官方方法接入微信分享功能
- 【POJ 3270】Cow Sorting(置换群排序)