\/\/ /-\......<|- ()分......

B3637 最长上升子序列

13288917088c @ 2023-12-16 14:12:27

40......

#include<bits/stdc++.h>
using namespace std;
int n,dp[5005],a[5005];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        dp[i]=1;
        for(int j=1;j<i;j++){
            if(a[i]>a[j]){
                dp[i]=max(dp[i],dp[j]+1);
            }
        }
    }
    cout<<dp[n];
    return 0;
}

by 13288917088c @ 2023-12-16 14:20:00

用ans存最大值,已优化。

#include<bits/stdc++.h>
using namespace std;
int n,dp[5005],a[5005],ans=0;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        dp[i]=1;
        for(int j=1;j<i;j++){
            if(a[i]>a[j]){
                dp[i]=max(dp[i],dp[j]+1);
            }
        }
        ans=max(ans,dp[i]);
    }
    cout<<ans;
    return 0;
}

此帖终~ (感谢楼下讨论区大神)


|