# include <stdio.h>
# include <conio.h>
/* lis() returns the length of the longest increasing
subsequence in arr[] of size n
array[5] elements are 3,10,2,1,30
the longest order order is 3,10,30
*/
int lis( int arr[], int n )
{
int *lis, i, j, max = 0;
lis = (int*) malloc ( sizeof( int ) * n );
/* Initialize LIS values for all indexes */
for (i = 0; i < n; i++ )
lis[i] = 1;
/* Compute optimized LIS values in bottom up manner */
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;
/* Pick maximum of all LIS values */
for (i = 0; i < n; i++ )
if (max < lis[i])
max = lis[i];
/* Free memory to avoid memory leak */
free(lis);
return max;
}
main()
{
int A[]={3,10,2,1,30};
clrscr();
printf("\n%d",lis(A,5));
}
# include <conio.h>
/* lis() returns the length of the longest increasing
subsequence in arr[] of size n
array[5] elements are 3,10,2,1,30
the longest order order is 3,10,30
*/
int lis( int arr[], int n )
{
int *lis, i, j, max = 0;
lis = (int*) malloc ( sizeof( int ) * n );
/* Initialize LIS values for all indexes */
for (i = 0; i < n; i++ )
lis[i] = 1;
/* Compute optimized LIS values in bottom up manner */
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;
/* Pick maximum of all LIS values */
for (i = 0; i < n; i++ )
if (max < lis[i])
max = lis[i];
/* Free memory to avoid memory leak */
free(lis);
return max;
}
main()
{
int A[]={3,10,2,1,30};
clrscr();
printf("\n%d",lis(A,5));
}
No comments:
Post a Comment