我可以通过普通函数和递归函数打印 LIS 的长度。但我想在 C++ 中的给定数组中打印 LIS 子序列的索引。
这是我查找 LIS 长度的函数:
int lis( int *arr, int n )
{
int *lis, i, j, max = 0;
lis = (int*) malloc ( sizeof( int ) * n );
for ( i = 0; i < n; i++ )
lis[i] = 1;
for ( i = 1; i < n; i++ )
for ( j = 0; j < i; j++ )
if ( arr[i] > arr[j] && lis[i] < lis[j] + 1)
lis[i] = lis[j] + 1;
for ( i = 0; i < n; i++ )
if ( max < lis[i] )
max = lis[i];
/* Free memory to avoid memory leak */
free( lis );
return max;
}
这里array[10]={7 6 2 3 4 1 8 5 9 10}
这里LIS Length=6
我想打印数字的索引{2 3 4 6 8 9}
(它不是它的数组索引,我想打印的序列)array[10]