2 solutions

  • 4
    @ 2024-8-5 15:03:49

    包对的

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

    Information

    ID
    977
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    5
    Tags
    (None)
    # Submissions
    80
    Accepted
    18
    Uploaded By