做题链接.
算法代码如下:
int max(int dpj,int dpi)
{
int max;
if(dpj > dpi) max = dpj;
else max = dpi;
return max;
}
int lengthOfLIS(int* nums, int numsSize){
if(numsSize == 0) return 0;
int i,j;
int dp[numsSize];
for(i = 0;i < numsSize;i++)
dp[i] = 1; //首先全部的上升序列长度都为1
//找出所有元素的序列长度
for(i = 0;i < numsSize;i++) {
for(j = 0;j < i;j++) {
if(nums[j] < nums[i])
dp[i] = max(dp[j] + 1,dp[i]);
}
}
int m = dp[0];
for(i = 0;i < numsSize;i++)
if(m < dp[i]) m = dp[i];
return m;
}