最长上升子序列(LIS)
来源:互联网 发布:计算机视觉与人工智能 编辑:程序博客网 时间:2024/04/29 01:37
O(n^2)算法:#include<stdio.h>#include<iostream>using namespace std;#define INF 0x3f3f3f3f#define N 1005int a[N],g[N];int main(){ int n,i,ans=0,L,R,mid; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&a[i]); g[i]=INF; } for(i=1;i<=n;i++){L=1,R=i-1;while(L<=R){ mid=(L+R)>>1; if(g[mid]>=a[i]) R=mid-1; else L=mid+1; } if(g[L]>a[i]) g[L]=a[i]; //printf("%d %d\n",L,g[L]); ans=max(ans,L);} //for(i=1;i<=ans;i++) //printf("%d ",g[i]); printf("%d\n",ans); system("pause"); return 0;}O(n log n)算法:#include<stdio.h>#include<iostream>using namespace std;#define N 1005int a[N],dp[N];int main(){ int n,i,j,ans=0; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&a[i]); dp[i]=1; } for(i=1;i<=n;i++){for(j=1;j<i;j++){ if(a[i]>a[j]) dp[i]=max(dp[i],dp[j]+1); } ans=max(dp[i],ans);} printf("%d\n",ans); //system("pause"); return 0;}
- LIS(最长上升子序列)
- 最长上升子序列(LIS)
- LIS(最长上升子序列)
- 最长上升子序列 (LIS)
- 最长公共上升子序列(LIS)
- 最长上升子序列(LIS)问题
- LIS(最长上升子序列)模板
- 最长上升子序列问题(LIS)
- 最长上升子序列(LIS)总结
- 最长上升子序列LIS(dp)
- 最长上升子序列(LIS)
- 最长上升子序列问题(LIS)
- 最长上升子序列模板(LIS)
- 最长上升子序列(LIS)
- 最长上升子序列(LIS)简介
- 最长上升子序列问题(LIS)
- 最长上升子序列问题(LIS)
- 最长上升子序列LIS
- poj3767
- POJ 1741 树的分治
- SEOer必须拥有良好的学习能力
- HDU 4389 X mod f(x) 数位统计DP
- WFP
- 最长上升子序列(LIS)
- 反汇编算法介绍和应用——递归下降算法分析
- [差分约束]poj 1201 Interval
- [floyd]poj 2570 fiber network #floyd+位运算
- 从事技术工作人员的出路
- 《Lua程序设计[第二版]》第3,4章笔记
- java泛型学习笔记
- 提高C语言程序运行稳定性的方法
- 常见的C语言内存错误及对策