北大oj百练-2757:最长上升子序列

#include
using namespace std;
int a[1010],dp[1010];//dp[i]表示以第i个数为终点时的最大上升子序列 
int max(int a,int b)
{
	if(a>b)return a;
	else return b;
}
int main()
{
	int n;
	cin >> n;
	for(int i=1;i<=n;i++)
	{
		cin >> a[i];
	}
	for(int i=1;i<=n;i++)
	{
		dp[i]=1;
	}
	for(int i=2;i<=n;i++)
	{
		for(int j=1;j<i;j++)
		{
			if(a[i]>a[j])
			{
				dp[i]=max(dp[i],dp[j]+1);
			}
		}
	}
	int max=0;
	for(int i=1;i<=n;i++)
	{
		if(dp[i]>max)
		max=dp[i];
	}
	cout << max <<endl;
}

你可能感兴趣的:(北大oj百练-2757:最长上升子序列)