POJ 2533Longest Ordered Subsequence(最长上升子序列)

67 阅读1分钟

题意:

就跟题目一样就是求最长的上升序列,dp常规题。

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int dp[1100],a[1100];
int main(){
	int n;
	while(scanf("%d",&n)!=EOF){
		for(int i=1;i<=n;i++)
			scanf("%d",&a[i]);
		for(int i=1;i<=n;i++){
			dp[i]=1;
			for(int j=i-1;j>=1;j--)
				if(a[i]>a[j]){
					dp[i]=max(dp[i],dp[j]+1);
				}
		}
		int mx=dp[1];
		for(int i=2;i<=n;i++)
			mx=max(mx,dp[i]);
		printf("%d\n",mx);
	}
	
}


\