LIS 求最长上升子序列长度
2017-03-07 08:04
417 查看
求最长上升子序列长度
求最长上升子序列(代码是我粘的,但我觉得还不错(我改过之后),纵使变量名难看,见下)
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int INF=0x3f3f3f3f;
int l;
int g[100010];
int d[100010];
int num[100010];
int main()
{
scanf("%d",&l);
memset(num,0,sizeof(num));
for(int i=0; i<l; i++)
scanf("%d",&num[i]);
fill(g,g+l,INF);
int max_=-1;
for(int i=0; i<l; i++)
{
int j=lower_bound(g,g+l,num[i])-g;
d[i]=j+1;
/*if(max_<d[i])
max_=d[i];这里可以改成求最长上升子序列*/
g[j]=num[i];
}
for(int i=0; i<l-1; i++)
printf("%d ",d[i]);
printf("%d\n",d[l-1]);
/* printf("%d\n",max_);*/
return 0;
}
#include <iostream> #include <cstdio> using namespace std; const int MAXN=5001; int s[MAXN]; int main(int argc, char *argv[]) { int n,i,x,l,r,mid; int top=0; s[0]=-1; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&x); if(x>s[top]) s[++top]=x; else { l=0,r=top; while(l<r) { mid=(l+r)/2; if(x<=s[mid]) r=mid; else l=mid+1; } s[l]=x; } } printf("%d\n",top); return 0; }
求最长上升子序列(代码是我粘的,但我觉得还不错(我改过之后),纵使变量名难看,见下)
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int INF=0x3f3f3f3f;
int l;
int g[100010];
int d[100010];
int num[100010];
int main()
{
scanf("%d",&l);
memset(num,0,sizeof(num));
for(int i=0; i<l; i++)
scanf("%d",&num[i]);
fill(g,g+l,INF);
int max_=-1;
for(int i=0; i<l; i++)
{
int j=lower_bound(g,g+l,num[i])-g;
d[i]=j+1;
/*if(max_<d[i])
max_=d[i];这里可以改成求最长上升子序列*/
g[j]=num[i];
}
for(int i=0; i<l-1; i++)
printf("%d ",d[i]);
printf("%d\n",d[l-1]);
/* printf("%d\n",max_);*/
return 0;
}
相关文章推荐
- 最长上升子序列(LIS)长度的O(n^2)与O(nlogn)算法
- 最长上升子序列(LIS)长度的O(nlogn)算法
- 最长上升子序列(LIS)长度的O(nlogn)算法
- 最长上升子序列(LIS)长度 O(nlogn)算法 hdu1950为例
- 最长上升子序列(LIS),求长度并打印子序列
- 【训练题】航线设计 | 使用最长上升子序列(LIS)长度的O(nlogn)算法优化
- 最长上升子序列(LIS)长度的O(nlogn)算法
- 最长上升子序列(LIS)长度的O(nlogn)算法
- 最长上升子序列(LIS)长度的O(nlogn)算法
- LIS(最长上升子序列长度)
- hdu5489(删除一段后的最长上升子序列长度)LIS
- 最长上升子序列(LIS)的两种算法
- hdu 1025 Constructing Roads In JGShining's Kingdom LIS最长上升序列
- 最长上升子序列(LIS)
- CDOJ 251 导弹拦截 (LIS,一种找到字典序最小的最长上升子序列的方法)
- LIS:最长非降子序列长度
- 最长上升子序列 (LIS)
- 【动态规划】之求最长上升子序列长度(难度:2星)
- 最长上升子序列(LIS)算法…
- 【字符串系列】最长上升子序列(LIS)