40分,最后三个点WA求助

B3637 最长上升子序列

Alvin1204 @ 2023-07-29 18:40:40

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

by gf20220934 @ 2023-07-29 19:07:27

依据题意,f数组应该全部赋值为1,而用

int f[5005]={1};

是不行的

可以先定义f数组,再将输入循环改为

for(int i=0;i<n;i++){
    cin>>a[i];
    f[i]=1;
}

就可以过了


by gf20220934 @ 2023-07-29 19:07:40

@Alvin1204


by Alvin1204 @ 2023-07-29 19:09:06

@gf20220934

懂了,谢谢


|