问题
思路
参照此前另一篇文章[最长递增子序列(LIS)-动态规划]
代码
int lengthOfLIS(int* nums, int numsSize) {
if( NULL == nums || numsSize <= 0 )
return 0;
int* dp = (int*)malloc( sizeof(int) * numsSize );
if(!dp)
return -1;
dp[0] = 1;
int max = 1;
for( int i = 1; i < numsSize; ++i )
{
dp[i] = 1;
for( int j = 0; j < i; ++j )
{
if( nums[j] < nums[i] && dp[j] + 1 > dp[i] )
dp[i] = dp[j] + 1;
}
if( dp[i] > max )
max = dp[i];
}
free(dp);
return max;
}