最长上升子序列的长度

滚动数组。。。。。。

#include
#include
#include
#include
#include
#include
#include
using namespace std;
int n;
int a[10001],maxlen[10001];/*maxlen[i]表示以a[i]为终点的最长上升子序列长度*/
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		maxlen[i]=1;//初始化为1
	}
	for(int i=2;i<=n;i++)
	{
		for(int j=1;j a[j])
				maxlen[i]=max(maxlen[i], maxlen[j]+1);
			//不能直接maxlen[i]=maxlen[j]+1
			//因为有可能maxlen[j]+1并不比原来的manlen[i]大
			
		}
	}
	//取maxlen[i]中的最大的值
	int max=maxlen[1];

	for(int i=2;i<=n;i++)
	{
		if(maxlen[i] > max)
			max = maxlen[i];
	}
	cout<

 

你可能感兴趣的:(模板)