求出最长子序列长度后怎样显示最长子序列元素值
对以下2个求最长子序列的程序 在最长子序列长度时,怎样显示最长子序列的元素值
或这用一个数组来存储最长子序列中结尾元素最小的一组
一个为 O(n^2)的
#include <stdio.h>
int a[10]={1,4,7,20,2,11,5,13,6,10};
int b[10]={0}; //b[i]存以a[i]为结尾元素的最长子序列长度
int c[10]={0}; //c[n]存a[n]最长子序列元素
int LISdyna()
{
int maxL(int n);
int i,j,k,n=10;
for(i=1,b[0]=1;i <n;i++)
{
for(j=0,k=0;j <i;j++)
if(a[j] <=a[i]&&k <b[j]) k=b[j];
b[i]=k+1;
}
return maxL(n);
}
int maxL(int n) //max(b[i])为a[n]最长子序列长度
{
int i,temp;
for(i=0,temp=0;i <n;i++)
if(b[i]>temp) temp=b[i];
return temp;
}
int main()
{
int i,j,k=LISdyna();
printf("%d\n",k); //k为a[n]最长子序列长度
return 0;
}