最长上升子序列
最长上升子序列:给出一个数列{a1,a2,...,an},要求你选出尽量多的元素,使这些元素按其相对位置单调递增。
例如,
有输入: 5 8 9 2 3 1 7 4 6
输出为(黑体)5 8 9 2 3 1 7 4 6 最长上升子序列长度为:4。
//4.动态规划解决最大上升子序列
#include<stdio.h>
#include<string.h>
#define MAXN 1000
int LISLength(int num,int * seqSrc)
{
int Len[MAXN];
int res=1;
for(int m=0;m<num;m++)
{
Len[m]=1;
for(int i=0;i<m;i++)
{
if(seqSrc[i]<seqSrc[m]&&Len[i]+1>Len[m])
{
Len[m]=Len[i]+1;
}
}
res=(res>Len[m]?res:Len[m]);
}
return res;
}
int main()
{
int n,seq[MAXN];
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
{
scanf("%d",&seq[i]);
}
printf("%d\n",LISLength(n,seq));
}
return 0;
}