2 solutions

  • 1
    @ 2025-10-4 11:14:14
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1010;
    int f[N],a[N],g[N];
    //f[i]=k 表示以a[i]结尾的最长不下降序列长度为k 
    //g[i]=j 表示以a[i]结尾的最长不下降序列长度为k需要接在a[j]的后面 
    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]<f[j]+1) //合法的新的序列比已有的序列长 
    			{
    				f[i]=f[j]+1;
    				g[i]=j;
    			}
    		}
    	}
    	int maxv=0,index; //找到最长不下降序列的长度和结尾的位置 
    	for(int i=1;i<=n;i++)
    	{
    		if(f[i]>maxv)
    		{
    			maxv=f[i];
    			index=i;
    		}
    	}
    	cout<<"max="<<maxv<<endl; //输出长度 
    	stack<int> stk;  //倒推整个序列 
    	while(index)
    	{
    		stk.push(a[index]); //储存当前数 
    		index=g[index]; //得到前面的数的位置 
    	}
    	while(stk.size()) //顺着输出 
    	{
    		cout<<stk.top()<<" ";
    		stk.pop();
    	}
    	return 0;
    }
    
    
    • -2
      @ 2024-7-10 10:15:47
      #include<bits/stdc++.h>
      using namespace std;
      const int N=1010;
      int f[N],a[N],g[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]<f[j]+1)
      			{
      				f[i]=f[j]+1;
      				g[i]=j;
      			}
      		}
      	}
      	int maxv=0,index;
      	for(int i=1;i<=n;i++)
      	{
      		if(f[i]>maxv)
      		{
      			maxv=f[i];
      			index=i;
      		}
      	}
      	cout<<"max="<<maxv<<endl;
      	stack<int> stk;
      	while(index)
      	{
      		stk.push(a[index]);
      		index=g[index];
      	}
      	while(stk.size())
      	{
      		cout<<stk.top()<<" ";
      		stk.pop();
      	}
      	return 0;
      }
      
      • 1

      Information

      ID
      980
      Time
      1000ms
      Memory
      256MiB
      Difficulty
      7
      Tags
      (None)
      # Submissions
      27
      Accepted
      9
      Uploaded By