最长不上升子序列:
标准算法——O(n^2)
#include <iostream>
using namespace std;
int n,i,j,H[1000],D[1001];
int main()
{
cin >> n;
for (i=1;i<=n;i++) cin >> H[i];
for(i=1;i<=n;i++) D[i]=1;
for(i=1;i<=n;i++)
for(j=i-1;j>0;j--)
if(H[i]<=H[j] && D[i]<D[j]+1)
D[i]=D[j]+1;
int max1=0;
for(i=1;i<=n;i++)
if(max1<D[i]) max1=D[i];
cout << max1;
return 0;
}
最长下降子序列:
if(H[i]<H[j] && D[i]<D[j]+1) D[i]=D[j]+1;
最长上升子序列:
if(H[i]>H[j] && D[i]<D[j]+1) D[i]=D[j]+1;
最长不下降子序列:
if(H[i]>H[j] && D[i]<D[j]+1) D[i]=D[j]+1;