您的位置:首页 > 产品设计 > UI/UE

poj2533-Longest Ordered Subsequence(最长上升子序列)

2017-04-11 19:39 411 查看
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

struct poj2533 {
/*[问题描述]:求最长上升子序列的长度*/
/*[解题思路]:f[i]表示以i结尾的最长上升子序列的长度,则f[i]=max{f[j]|v[j]<v[i],j<i}+1*/

int n;
int v[1005];
int f[1005];
void work() {
while (cin >> n) {
for (int i = 1; i <= n; i++)
cin >> v[i];

f[0] = 0;
for (int i = 1; i <= n; i++) {
f[i] = 1;
for (int j = i - 1; j >= 1; j--)
if (v[j] < v[i])
f[i] = max(f[i], f[j] + 1);
}
int ans = 0;
for (int i = 1; i <= n; i++)
ans = max(ans, f[i]);
cout << ans << endl;
}
}
};
int main()
{
poj2533 solution;
solution.work();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  poj 动态规划