80分,RE急!

B3637 最长上升子序列

ammdyc @ 2023-07-30 11:42:55


#include<bits/stdc++.h>
using namespace std;
int n,a[1010],f[1010],c[1010];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    f[n]=1;
    for(int i=n-1;i>=1;i--){
        int maxx=0,k=0;
        for(int j=i+1;j<=n;j++){
            if(a[i]<=a[j]&&maxx<f[j]){
                maxx=f[j];
                k=j;
            }
        }
        c[i]=k;
        f[i]=1+maxx;
    }

    int ans=0,s=0;
    for(int i=1;i<=n;i++){
        if(ans<f[i]){
            ans=f[i];
            s=i;
        }
    }
    cout<<ans<<endl;
    return 0;
}

by KidzzZip @ 2023-07-30 11:43:55

数组开小了,看题目给出的数据范围。


by ammdyc @ 2023-07-30 11:44:35

删了一些不重要的东西


#include<bits/stdc++.h>
using namespace std;
int n,a[1010],f[1010];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    f[n]=1;
    for(int i=n-1;i>=1;i--){
        int maxx=0,k=0;
        for(int j=i+1;j<=n;j++){
            if(a[i]<=a[j]&&maxx<f[j]){
                maxx=f[j];
            }
        }
        f[i]=1+maxx;
    }

    int ans=0;
    for(int i=1;i<=n;i++){
        if(ans<f[i]){
            ans=f[i];
        }
    }
    cout<<ans<<endl;
    return 0;
}

by ammdyc @ 2023-07-30 11:45:53

@KidzzZip 谢谢


|