Poj 2533

7
1 7 3 5 9 4 8
求最长上升子序列的个数
#include<iostream>
using namespace std;
int dp[10001];
int a[10001];
int main()
{
	int max;
	int i,j;
	int n;
	while(scanf("%d",&n)!=EOF)
	{
		max=0;
		for(i=1;i<=n;i++)
		{
			dp[i]=1;
			scanf("%d",&a[i]);
		}
		for(i=1;i<=n;i++)
		{
			int min=0; 
			for(j=1;j<i;j++)
				if(a[i]>a[j]&&dp[j]>min)
					min=dp[j];
			dp[i]+=min;
			if(dp[i]>max)
				max=dp[i];
		}
		cout<<max<<endl;
	}
	return  0;
}

 

posted @ 2014-07-15 16:12  _一千零一夜  阅读(103)  评论(0编辑  收藏  举报