#include<bits/stdc++.h>
using namespace std;
int n,f[107][4],maxx,maxl;
int dg(int n)
{
if(f[n][3]==0) cout<<f[n][1]<<" ";
else
{
dg(f[n][3]);
cout<<f[n][1]<<" ";
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>f[i][1];
f[i][2]=1;
f[i][3]=0;
}
for(int i=2;i<=n;i++)
for(int j=1;j<=i;j++)
{
if(f[i][1]>f[j][1] && (f[j][2]+1>f[i][2]))
{
f[i][2]=f[j][2]+1;
f[i][3]=j;
if(f[i][2]>maxx)
{
maxx=f[i][2];
maxl=i;
}
}
}
cout<<"max="<<maxx<<endl;
dg(maxl);
}
最长不下降子序列—递归输出最长链
最新推荐文章于 2021-04-17 19:54:46 发布