[xxjs96题解]DP入门_最长上升子序列

http://192.168.25.226/problem/xxjs96

 

f[i]表示从第i个数开始能够得到的最长上升序列的长度,因此得到下图。

 

因此动态转移方程和 核心代码为:

 

 

#include<cstdio>
#include<iostream>
using namespace std;
int f[1000],a[1000];
int main()
{
    int n,max=-100;
    cin>>n;
    for(int i=1;i<=n;i++)
      cin>>a[i];
      
    for(int i=1;i<=n;i++) f[i]=1;
    
    for(int i=n;i>=1;i--)
      for(int k=i+1;k<=n;k++)
        if((a[i]<a[k])&&(f[i]<1+f[k]))   f[i]=1+f[k];
    
      
    for(int i=1;i<=n;i++)
       if(f[i]>max) max=f[i];
        
    cout<<max;
    return 0;  
    
}

 

posted on 2021-02-20 21:03  lcdxjsj  阅读(130)  评论(0)    收藏  举报

导航