当前位置 : 主页 > 编程语言 > c++ >

safsdf

来源:互联网 收集:自由互联 发布时间:2021-06-23
#include bits/stdc++.h #define MAXN 5010 using namespace std; int f[MAXN],loot[MAXN],num[MAXN]; int i,n,m,j,a,ans[MAXN]; void _shuchu( int n){ if (loot[n]!= 0 ) _shuchu(loot[n]); printf( " %d " ,num[n]);} int find( int n){ if (loot[n]!= 0 )
#include <bits/stdc++.h>
#define MAXN 5010
using namespace std;
int f[MAXN],loot[MAXN],num[MAXN];
int i,n,m,j,a,ans[MAXN];
void _shuchu(int n)
{
    if(loot[n]!=0)
    _shuchu(loot[n]);
    printf("%d ",num[n]);
}
int  find(int n)
{
    if(loot[n]!=0)
    _shuchu(loot[n]);
    else return n;
}
int main(){
   scanf("%d",&n);
   for(i=1;i<=n;i++) f[i]=1,scanf("%d",&num[i]);
   for(i=1;i<=n;i++)
   {
       for(j=1;j<i;j++)
       {
           if(num[i]>num[j]&&1+f[j]>f[i]) f[i]=f[j]+1,loot[i]=j;
       }
     
   }j=0;
   for(i=2;i<=n;i++)
      {
      if(f[i-1]<=f[i]) ans[++j]=i;
      else
      ans[++j]=i-1;
      }
   for(;j>1;j--)
   {
       if(find(j)<find(j-1)) ans[0]=j;
       else ans[0]=j-1;
   }
   printf("%d\n",f[ans[0]]);
   _shuchu(ans[0]);
}
上一篇:C++ note
下一篇:C++类的继承方式探究
网友评论