题意:
都是中文,题意即是字面意思;
分析:
要求第n个数的最长子序列就是找第前n-1个数的最长子序列,其中每一项要大于前一项,那么用前n-1个数的最长子序列加1就求得第n个数的最长子序列;
代码:
#include
<bits/stdc++.h>
using namespace std ;
int Max [ 10001 ]= { 1 } ;
int main ()
{
int a [ 10001 ],i ,j ,k ,m ,n ;
cin >>n ;
for (i = 0 ;i <n ;i ++)
cin >>a [i ];
for (i = 1 ;i <n ;i ++)
{ m = 0 ;
for (j = 0 ;j <i ;j ++)
{
if (a [j ]<a [i ])
{
if (m <Max [j ])
m =Max [j ];
}
Max [i ]=m +1 ;
}
}
for (i = 0 ,k =Max [ 0 ];i <n ;i ++)
if (k <Max [i ])
k =Max [i ];
cout <<k <<endl ;
return 0 ;
}
using namespace std ;
int Max [ 10001 ]= { 1 } ;
int main ()
{
int a [ 10001 ],i ,j ,k ,m ,n ;
cin >>n ;
for (i = 0 ;i <n ;i ++)
cin >>a [i ];
for (i = 1 ;i <n ;i ++)
{ m = 0 ;
for (j = 0 ;j <i ;j ++)
{
if (a [j ]<a [i ])
{
if (m <Max [j ])
m =Max [j ];
}
Max [i ]=m +1 ;
}
}
for (i = 0 ,k =Max [ 0 ];i <n ;i ++)
if (k <Max [i ])
k =Max [i ];
cout <<k <<endl ;
return 0 ;
}