/*
* testdp.cpp
*
* Created on: 2013年8月14日
* Author: Administrator
*/
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
int max(int a, int b) {
return a > b ? a : b;
}
int a[101];
int dp[101];
int main() {
int n;
while (scanf("%d", &n) != EOF, n) {
memset(dp, 0, sizeof(dp));
int i;
for (i = 1; i <= n; ++i) {
scanf("%d", &a[i]);
}
int j;
int maxs = -1;
dp[1] = 1;
for (i = 2; i <= n; ++i) {
for (j = 1; j < i; ++j) {
if (a[i] >= a[j]) {
dp[i] = max(1, dp[j] + 1);
maxs = max(maxs, dp[i]);
}
}
}
cout << maxs << endl;
}
}
求最长非降子序列的长度
最新推荐文章于 2022-01-05 23:49:16 发布
本文介绍了一种使用动态规划(DP)算法解决寻找数组中最长递增子序列的问题。通过实例演示了如何实现并优化该算法。

1394

被折叠的 条评论
为什么被折叠?



