1080: 最长上升子序列Ⅰ

注意1:严格递增
注意2:本身序列为1
注意3:倒着往回找的时候,每个都要试一下,不能提前剪枝

#include <bits/stdc++.h>
using namespace std;
int n;
const int N=1010;
int num[N];
int dp[N];
int main(){
	while(scanf("%d",&n)!=EOF){
		for(int i=1;i<=n;i++){
			scanf("%d",&num[i]);
		}
		int m=0;
		for(int i=1;i<=n;i++){
			int j=i-1;
			dp[i]=1;
			while(j>=0){
				if(num[i]>num[j])
					{	
						dp[i]=max(dp[i],dp[j]+1);
						//cout<<"dp["<<i<<"]="<<dp[i]<<endl;
						m=max(m,dp[i]);
					}
				j--;
			}
		}
		printf("%d\n",m);
	}
	return 0;
}
posted @ 2026-03-12 01:05  peter_shen  阅读(7)  评论(0)    收藏  举报