LIS:最长递增子序列(子序列,不是子串)
例:
[ 10 , 9, 2, 5, 3, 7, 101, 18]
最长上升子序列为:[2,3,7,101] 长度为4
#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
using namespace std;
int max(int a,int b)
{
return a>b?a:b;
}
int dp[1009];
int main(void){
int n;
int num[1009];
while( scanf("%d",&n)!=EOF){
memset(dp,0,sizeof(dp));
for( int i=0;i<n;i++)
scanf("%d",&num[i]);
dp[1] = 1;
int maxx= 1;
for( int i=0;i<n;i++){
dp[i]=1;
for( int j=0;j<i;j++){
if( num[i] > num[j] ){
dp[i]= max( dp[i] ,dp[j]+1);
maxx = max( maxx,dp[i]);
}
}
}
printf("%d\n",maxx);
}
return 0;
}