Saturday, January 21, 2012

LIS(Longest Increasing Sub sequence )Complexity In O(n^2)

#include <iostream>
#include <vector>
using namespace std;


int LIS(vector<int>Data)
{
int i,j,maxv;
vector<int>DP(Data.size(),1);
for(i=maxv=1;i<Data.size();i++)
{
for(j=i-1;j>=0;j--)
{
            if(Data[j]<=Data[i] && DP[j]+1>DP[i])
            {
                DP[i]=DP[j]+1;
                maxv=max(maxv,DP[i]);
            }
}
}
return maxv;
}
int main()
{
int n,i,val;
vector<int>Data;
while(scanf("%d",&n)==1 && n)
{
Data.clear();
for(i=0;i<n;i++)
{
scanf("%d",&val);
Data.push_back(val);
}
val=LIS(Data);
printf("LIS:%d\n",val);
}
}




/*
4
2 3 5 1
LIS:3      (2  3  5)
4
1 4 2 14
LIS:3      (1  4  14)      */

No comments:

Post a Comment