百度笔试题:求序列里最长的非降序列

来源:互联网 发布:传淘宝代销是什么意思 编辑:程序博客网 时间:2024/05/21 17:52

求序列里最长的非降序列
例如:输入:{5,3,4,8,6,7}
输出:4 即{3,4,6,7}


#include<iostream>

using namespace std;

int MaxLength(int *a,int n)
{
int *b = new int ;
int i,j;
for(i=0;i<n;i++)
{
b[i] = 1;
for(j=0;j<i;j++)
{
if(a[i] > a[j] && b[j] + 1 > b[i])
b[i] = b[j] +1;
}
}
j=0;
int max = b[j];
for(j=1;j<n;j++)
{
if(b[j] > max)
max = b[j];
}
return max;
}

int main()
{
int a[] = { 5,3,4,8,6,7};
cout<<"最长非降序序列:";
for(int i= 0;i<6;i++)
cout<<a[i]<<" ";
cout<<endl;
cout<<"长度为:";
cout<<MaxLength(a,6)<<endl;
return 0;

}

运行结果:


0 0