求助,40,玄关

B3637 最长上升子序列

szlh_XJS @ 2024-07-14 14:29:37

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

by hutao_262218926 @ 2024-07-14 14:35:11

#include<bits/stdc++.h>
using namespace std;
int n,an;
int nn[5005],t[5005];
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>nn[i];
        t[i]=1;
    }

    for(int i=2;i<=n;i++)
    {
        for(int j=1;j<i;j++)
        {
            if(nn[i]>nn[j])
            {
                t[i]=max(t[i],t[j]+1);
            }
        }
    }
    for(int i=1;i<=n;i++)
    {
        an=max(an,t[i]);
    }
    cout<<an;
    return 0;
 }

t要全部设为1


by szlh_XJS @ 2024-07-14 15:00:42

@hutao_262218926 why


by hutao_262218926 @ 2024-07-14 16:32:01

举个栗子,n=2,nn包含1和2,f[1]=1,f[2]=0, 那f[2]=max(t[i],t[j]+1)=max(1,1)=1,而f[2]应该等于2


|