题目描述
设有由n个不相同的整数组成的数列,记为:b(1)、b(2)、……、b(n)且b(i)<>b(j) (i<>j),若存在i1<i2<i3< … < ie 且有b(i1)<b(i2)< … <b(ie)则称为长度为e的不下降序列。程序要求,当原数列出之后,求出最长的不下降序列。
例如13,7,9,16,38,24,37,18,44,19,21,22,63,15。例中13,16,18,19,21,22,63就是一个长度为7的不下降序列,同时也有7 ,9,16,18,19,21,22,63长度为8的不下降序列。
输入
第一行输入个数n
第二行输入n个数
输出
输出最长的不下降数列的长度
样例输入 复制
10 3 18 7 14 10 12 23 41 16 24
样例输出 复制
6
代码:
#include<bits/stdc++.h>
using namespace std;
long long a[1005],f[1005],n,maxx=-1;
int main()
{
cin>>n;
for(long long i=1;i<=n;i++)
{
cin>>a[i];
}
a[0]=-11;
for(long long i=1;i<=n;i++)
{
for(long long j=0;j<=i-1;j++)
{
if(a[i]>=a[j])
{
f[i]=max(f[i],f[j]+1);
}
}
}
for(long long i=1;i<=n;i++)
{
maxx=max(maxx,f[i]);
}
cout<<maxx;
return 0;
}