最大递增子序列

来源:互联网 发布:知乎最好用的版本 编辑:程序博客网 时间:2024/06/08 14:51

最大递增子序列(Longest Increasing Subsequence)是指找到一个给定序列的最长子序列的长度,使得子序列中的所有元素单调递增。

例如:{3,5,7,1,2,8}的LIS是{3,5,7,8},长度为4。

代码如下:

//最长递增子序列 #include<iostream>using namespace std;int a[10];int b[10];int main(){int n,i,j,max=0;cin>>n;for(i=0;i<n;i++)  cin>>a[i];for(i=0;i<n;i++){b[i]=1;for(j=0;j<i;j++){if(a[i]>a[j]&&b[i]<b[j]+1)    b[i]=b[j]+1;}}for(i=0;i<n;i++){if(b[i]>max)   max=b[i];}cout<<max<<endl;return 0;}