具体分析参照编程之美。
#include <iostream>
using namespace std;
#define N 8
int LIS(int array[],int n)
{
int temp[N];
int maxV[N];
maxV[1] = array[0];
maxV[0] = 9999;
for (int i = 0; i < n; i++)
temp[i] = 1;
int nMaxLis = 1;
int j;
for (int i = 1; i < n; i++)
{
for (j = nMaxLis; j > 0; j--)
{
if (array[i] < maxV[j])
{
temp[i] = j+1;
}
}
if (array[i] < maxV[nMaxLis])
{
nMaxLis++;
maxV[nMaxLis] = array[i];
}
else if (array[i] < maxV[j] && array[i] > maxV[j+1])
{
maxV[j+1] = array[i];
}
}
return nMaxLis;
}
int main()
{
int arr[]={6, 3, 2, 1, 2, 3, 6, 7};
int result=LIS(arr,8);
cout<<result<<endl;
}
Ref:http://blog.youkuaiyun.com/tianshuai11/article/details/7887810