简易DP——最长上升子序列 poj 2533

简易DP——最长上升子序列 poj 2533

// 状态为数组第位置k,作为每个子序列的末位,状态值为最长上升子序列长度,初始L[0]=1
#include < cstdio >
#include
< cstdlib >
#include
< cmath >
#include
< string >

int  k,n,ct,arr[ 1010 ],L[ 1010 ];


int  main()
{
    
int i,j,max;
    scanf(
"%d",&n);
    
for(i=0;i<n;++i)
        scanf(
"%d",&arr[i]);
    L[
0]=1;
    
for(i=1;i<n;++i)
    
{
        max
=0;
        
for(j=0;j<i;++j)
            
if(arr[j]<arr[i]&&L[j]>max)max=L[j];
        L[i]
=max+1;
    }

    max
=0;
    
for(i=0;i<n;++i)//此循环不可少,因为L[n-1]为包含最后一个数字的最大串长度,题目未加此条件
        if(max<L[i])max=L[i];
    printf(
"%d\n",max);
    
return 0;
}

你可能感兴趣的:(简易DP——最长上升子序列 poj 2533)