#include<iostream>
using namespace std;
int IncreaseOrder(int a[],int n)
{
int L[10],x[10][10]; // 假设最多10个元素
for (int i=0;i<n;i++){ // 初始化,最长递增子序列长度为1
L[i] = 1;
x[i][0] = a[i];
}
for(int i=0;i<n;i++){ // 初始化递增子序列长度的最大值
int max=1;
for(int j=i-1;j>=0;j--){ // 对所有的 aj < ai
if((a[j]<a[i]) && (max<L[j]+1)){
max = L[j]+1;
L[i] = max;
for(int k=0;k<max-1;k++) // 存储最长递增子序列
x[i][k] = x[j][k];
x[i][max-1] = a[i];
}
}
}
int index=0;
for(int i=1;i<n;i++){ // 求所有递增子序列的最大长度
if(L[index]<L[i])
index = i;
}
cout<<"最长递增子序列是:";
for(int i=0;i<L[index];i++) // 输出最长递增子序列
cout<<x[index][i]<<" ";
cout<<endl;
return L[index]; // 返回最长递增子序列的长度
}
int main()
{
int a[8] = {5,2,8,6,3,6,9,7};
cout<<IncreaseOrder(a,8)<<endl; // 输出最小递增序列长度
return 0;
}