1 条题解

  • 0
    @ 2024-10-3 10:59:33

    #include<bits/stdc++.h>

    using namespace std;

    const int maxn=1e6+10;

    int ma=-10;

    int dp[maxn];

    int a[maxn]={0};

    int main(){

    int n;
    
    cin>>n;
    
    for(int i=1;i<=n;i++){
    
        cin>>a[i];//输入原数组 
      
        dp[i]=1;//把dp数组(最长上升子序列)全
      体赋为一 
      
    	for(int j=1;j<i;j++){//a[j]:曾经的最长上升子序列 
    
    		if(a[j]<a[i]) dp[i]=max(dp[i],dp[j]+1);//截止到a[i]最长的
      子序列(每一次用a[j]从1一直找到a[i]) 
      
    		}
      
    	ma=max(ma,dp[i]);//每输入一个数算截止到这个数的最长上升子序列 
    
    }
    
    cout<<ma;//输出最长上升子序列 
    
    return 0;
    

    }

    信息

    ID
    36
    时间
    1000ms
    内存
    512MiB
    难度
    4
    标签
    递交数
    77
    已通过
    33
    上传者