您的位置:首页 > 其它

2.16 求数组中最长的递增子序列

2012-09-13 18:11 302 查看
#include <stdio.h>
#include <stdlib.h>
int max(int *a,int len)//求数组的最大元素
{
int i,max;
max=a[0];
for(i=1;i<len;i++)
{
if(a[i]>max)
max=a[i];
}
return max;
}
int LIS(int * array,int n)
{
int i,j;
int *lis=(int *)malloc(n*sizeof(int));//lis[i]为包含第i个元素的最长递增子序列的长度
for(i=0;i<n;i++)
{
lis[i]=1;
for(j=0;j<i;j++)
{
if(array[i]>array[j]&&lis[j]+1>lis[i])
lis[i]=lis[j]+1;
}
}
return max(lis,n);
}
int main()
{
int str[]={1,-1,2,-3,4,-5,6,-7};
int max=LIS(str,8);
printf("max:%d\n",max);
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐