Given an array of integers, determine the longest increasing subsequence (not necessarily contiguous).
Equations:
LIS[i] = MAX( LIS[j] ) + 1; where 0 <= j < i and A[i] > A[j]
Equations:
LIS[i] = MAX( LIS[j] ) + 1; where 0 <= j < i and A[i] > A[j]
#define MAX(a, b) ((a)>(b))?(a):(b)
int LIS[1000];
int lis(int* A, int len)
{
int i, j;
int max;
LIS[0] = 1;
for(i=1; i < len; i++)
{
max = 0;
for(j=0; j < i; j++)
{
if(A[i] > A[j])
max = MAX(max, LIS[j]);
}
printf("max: %d\n", max);
LIS[i] = max + 1;
}
return LIS[len-1];
}
int main()
{
int A[] = {4, 3, 9, 4 ,1 ,6};
printf("LIS: %d\n", lis(A, 6));
return 0;
}
No comments:
Post a Comment