c_cpp 最长的子序列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 最长的子序列相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <algorithm>
using namespace std;

const int N = 100;
int A[N], dp[N];

int main() {
	int n;
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> A[i];
	}
	int ans = -1;	// Record the maximum of dp[i]
	for (int i = 1; i <= n; i++) {	// calculate dp[i] in order
		dp[i] = 1;
		for (int j = 1; j < i; j++) {
			if (A[i] >= A[j] && (dp[j] + 1 > dp[i])) {
				dp[i] = dp[j] + 1;	// state transition equation, used to update dp[i] 
			}
		}
		ans = max(ans, dp[i]);
	}
	cout << ans << endl;
	return 0;
}

/*
Sample Input:
8 
1 2 3 -9 3 9 0 11 
Sample Output:
6 // 1 2 3 3 9 11
*/

以上是关于c_cpp 最长的子序列的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 最长的子序列

c_cpp 最长的子序列

c_cpp 最长的子串

c_cpp 最长的子字符串,不重复字符

c_cpp 最长的共同子序列

c_cpp 最长的字符串子序列