设计一个O(n^2)时间的算法,找出由n个数字组成的序列的最长单调递增子序列。
#include<bits/stdc++.h>
using namespace std;
int a[100];//先用冒泡试试
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
int len,Maxlen=0;
int ii;
int t;//表示当前遍历到哪个和后面的比较
for(int i=0;i<n;i++){
len=0;
t=i;
for(int j=i;j<n;j++){
if(a[j]>a[t]){
t=j;//更新t
len++;
}
}
if(len>Maxlen)
{
Maxlen=len;
ii=i;
}
}
t=ii;
cout<<Maxlen+1<<endl<<a[ii]<<" ";
for(int i=ii;i<n;i++){
if(a[i]>a[t])
{
t=i;
cout<<a[i]<<" ";
}
}
}