#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); }