http://tyvj.cn/p/3573
经典dp问题,求最长不下降序列
要注意序列可能出现等于,第一次WA就是这个原因
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main ()
{
const int maxn = 10000+5;
int a[maxn];
int n;
scanf("%d", &n);
for (int i=1;i<=n;i++)
{
scanf("%d", &a[i]);
}
int d[maxn];
d[1] = 1;
int maxd=-1;
for (int i=2;i<=n;i++)
{
d[i] = 1;
for (int j=1;j<i;j++)
{
if (a[j]<=a[i])//注意序列可能出现等于
{
d[i] = max(d[i], d[j]+1);
}
}
maxd = max(maxd, d[i]);
}
printf("%d\n", maxd);
return 0;
}