OpenJ_Bailian - 2757 最长上升子序列【动态规划】

题目链接:https://cn.vjudge.net/problem/OpenJ_Bailian-2757

思路:dp入门题,最优子结构,状态,状态转移方程,完事。

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN = 1005;
int main()
{
	int N,a[MAXN],ans[MAXN]; // ans[i] // 以i为结尾的前i个数的最长上升子序列
	cin >> N;
	for(int i=1;i<=N;i++) {
		cin >> a[i];
		ans[i] = 1;
	}
		
	for(int i=2;i<=N;i++)
		for(int j=1;j<i;j++)
			if(a[i] > a[j])
				ans[i] = max(ans[i],ans[j]+1);

	cout << *max_element(ans+1,ans+N+1) << endl;

}

猜你喜欢

转载自blog.csdn.net/weixin_42765557/article/details/84969773