返回题解分享
讨论 / 题解分享/ 帖子详情

最长不下降子序列 - 题解

#include <bits/stdc++.h>
using namespace std;

#define int long long

const int N = 1100;
int dp[N];		//dp[i]表示一第i个数为结尾的最长序列长度
int a[N];		//用来存储数组

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0) , cout.tie(0);
	int n;
	cin >> n;
	for(int i = 1 ; i <= n ; i ++){
		cin >> a[i];
		dp[i] = 1;	//因为每一个数都可以单独作为一个不下降序列,长度即为1
	}
	for(int i = 1 ; i <= n ; i ++)
		for(int j = 1 ; j < i ; j ++)
			if(a[j] < a[i])
				dp[i] = max(dp[i] , dp[j] + 1);
	int ans = 0;
	for(int i = 1 ; i <= n ; i ++)
		ans = max(ans , dp[i]);
	cout << ans << '\n';
	return 0;
}
0 回复 0 转发 0 喜欢 3 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!