最长递增子序列(动态规划)
Posted geziyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长递增子序列(动态规划)相关的知识,希望对你有一定的参考价值。
题目描述
有n个互不相同的整数an
若存在一个数列bm
其中对于任何1 < i < m
满足bi < bi+1 且 abi < abi+1
则称abn为an的一个递增子序列
试求出给定序列的最长递增子序列长度
若存在一个数列bm
其中对于任何1 < i < m
满足bi < bi+1 且 abi < abi+1
则称abn为an的一个递增子序列
试求出给定序列的最长递增子序列长度
程序输入说明
本题由多组数据组成,以EOF结束
程序输出说明
对于每组数据输出一行结果,代表最长递增序列长度
程序输入样例
3 1 2 3 10 3 18 7 14 10 12 23 41 16 24
程序输出样例
3 6
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int a[7010],b[7010]; 5 int main(){ 6 int n; 7 while(cin>>n){ 8 for(int i=1;i<=n;i++) 9 cin>>a[i]; 10 int max=0; 11 b[1]=1; 12 for(int i=2;i<=n;i++){ 13 int k=0; 14 for(int j=1;j<i;j++){ 15 if(a[j]<a[i]&&k<b[j]) 16 k=b[j]; 17 } 18 b[i]=k+1; 19 if(max<b[i]) 20 max=b[i]; 21 } 22 cout<<max<<endl; 23 } 24 return 0; 25 }
以上是关于最长递增子序列(动态规划)的主要内容,如果未能解决你的问题,请参考以下文章