#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); }
2.16 求数组中最长的递增子序列
最新推荐文章于 2021-05-19 18:57:06 发布