5 solutions

  • 5
    @ 2024-7-8 14:53:32
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1010;
    int f[N],a[N];
    int main()
    {
       int n;
       cin>>n;
       for(int i=1;i<=n;i++)
       {
          cin>>a[i];
       }
       int res=0;
       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);
             }
          }
          res=max(res,f[i]);
       }
       cout<<res;
       return 0;
    }
    
  • 1
    @ 2026-2-23 20:58:14
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1010;
    int a[N];
    int f[N]; //f[i]表示以a[i]结尾的最长上升子序列的长度 
    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;//自己是一个序列
    		//接下来判断a[i]是否可以拼接在前面某个数的后面
    		for(int j=1;j<i;j++)
    		{
    			if(a[i]>a[j])
    			{
    				f[i]=max(f[i],f[j]+1);	
    			}	
    		} 
    	}
    	int res=0;
    	for(int i=1;i<=n;i++)
    	{
    		res=max(res,f[i]);
    	}
    	cout<<res;
    	return 0;
    }
    
    
    • 1
      @ 2025-2-22 18:39:14
      #include<bits/stdc++.h>
      using namespace std;
      const int N=1010;
      int a[N],f[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);
      			}
      		}
      	}
      	int zuida=1;
      	for(int i=1;i<=n;i++)
      	{
      		zuida=max(f[i],zuida);
      	}
      	cout<<zuida;
      	return 0;
      }
      
      
      • @ 2025-2-22 18:39:51

        之前发错地方了重新发一个布下

    • -3
      @ 2025-1-13 13:42:37
      #include<bits/stdc++.h>
      using namespace std;
      const int N=1010;
      int f[N]
      vector<int> a[N];
      int main()
      {
      	int n;
      	cin>>n;
      	for(int i=1;i<n;i++)
      	{
      		cin>>a[i];
      	}
      	char res=1;
      	for(int i=0;i<n*n;i++)
      	{
      		f=1;
      		for(int j=1;j<=f;j++)
      		{
      			if(f[i]<a[j])
      			{
      				a[i]=min(a[i],a[j]+1);
      			}
      		}
      		f=min(res,f[a]);
      	}
      	cout<<res<<" "<<f;
      	return 0;
      }
      
      
    • -3
      @ 2024-12-21 19:41:06
      #include<bits/stdc++.h>
      using namespace std;
      const int N=1e5;
      int a[N];
      int dp[N]; 
      int main(){
      	int n;
      	cin>>n;
      	for(int i=1;i<=n;i++)
      	{
      		cin>>a[i];
      	}
      	
      	for(int i=2;i<=n;i++)
      	{
      		dp[i]=1;
      		for(int j=1;j<i;j++)
      		{
      			if(a[i]>a[j])dp[i]=max(dp[i],dp[j]+1);
      		}
      	}
      	int jishu=0;
      	for(int i=1;i<=n;i++)
      	{
      		jishu=max(dp[i],jishu);
      	}
      	cout<<jishu;
      	return 0;
      }
      
      
      
    • 1

    Information

    ID
    975
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    5
    Tags
    (None)
    # Submissions
    104
    Accepted
    28
    Uploaded By