时间: 1000ms / 空间: 131072KiB / Java类名: Main
描述
求最长不下降子序列的长度
输入格式
第一行为n,表示n个数
第二行n个数
第二行n个数
输出格式
最长不下降子序列的长度
测试样例1
输入
3
1 2 3
输出
3
备注
N小于5000
for each num <=maxint
for each num <=maxint
居然把dp都忘了,唉。。。。
基础题,用f数组来存下降序列的长度,a数组保存数字
#include <cstdio>
#include <iostream>
using namespace std;
int f[100000],a[100000];
int main()
{
int n,i,j,k;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
f[i]=1;
}
for(i=1;i<=n;i++)
{
for(j=1;j<i;j++)
{
if(a[j]<=a[i])
f[i]=max(f[j]+1,f[i]);
}
}
int Max=0;
for(i=1;i<=n;i++)
if(f[i]>Max)Max=f[i];
printf("%d\n",Max);
return 0;
}