最长上升子序列 POJ2533
2015-02-02 09:54
211 查看
Description
A numeric sequence of ai is ordered if a1 < a2 <
... < aN. Let the subsequence of the given numeric sequence (a1, a2,
..., aN) be any sequence (ai1, ai2,
..., aiK), where 1 <= i1 < i2 <
... < iK <= N. For example, sequence (1, 7, 3, 5, 9, 4, 8) has ordered subsequences, e. g., (1, 7), (3, 4, 8) and many others.
All longest ordered subsequences are of length 4, e. g., (1, 3, 5, 8).
Your program, when given the numeric sequence, must find the length of its longest ordered subsequence.
Input
The first line of input file contains the length of sequence N. The second line contains the elements of sequence - N integers in the range from 0 to 10000 each, separated by spaces. 1 <= N <= 1000
Output
Output file must contain a single integer - the length of the longest ordered subsequence of the given sequence.
Sample Input
Sample Output
A numeric sequence of ai is ordered if a1 < a2 <
... < aN. Let the subsequence of the given numeric sequence (a1, a2,
..., aN) be any sequence (ai1, ai2,
..., aiK), where 1 <= i1 < i2 <
... < iK <= N. For example, sequence (1, 7, 3, 5, 9, 4, 8) has ordered subsequences, e. g., (1, 7), (3, 4, 8) and many others.
All longest ordered subsequences are of length 4, e. g., (1, 3, 5, 8).
Your program, when given the numeric sequence, must find the length of its longest ordered subsequence.
Input
The first line of input file contains the length of sequence N. The second line contains the elements of sequence - N integers in the range from 0 to 10000 each, separated by spaces. 1 <= N <= 1000
Output
Output file must contain a single integer - the length of the longest ordered subsequence of the given sequence.
Sample Input
7 1 7 3 5 9 4 8
Sample Output
4
#include <cstdio> #include <memory.h> #define MAX_N 1000 int b[MAX_N+10]; int aMaxLen[MAX_N+10] ; void main() { int N,i; while(scanf("%d",&N)) { for (i=1;i<=N; ++i) { scanf("%d",&b[i]); } aMaxLen[1]=1; for (i=2;i<=N;++i) { int nTmp = 0; for (int j = 1;j<i;++j) { if (b[i]>b[j]) { if (nTmp < aMaxLen[j]) { nTmp = aMaxLen[j] ; } } } aMaxLen[i] = nTmp + 1 ; } /*for (i=0;i<=N;++i) { printf("%d ",aMaxLen[i]); } printf("\n");*/ int nMax = -1; for (i=1;i<=N;++i) { if (nMax<aMaxLen[i]) { nMax =aMaxLen[i] ; } } printf("%d\n",nMax); } }
相关文章推荐
- 最长上升子序列 nlogn时间复杂度 poj 2533
- 经典动态规划问题--最长上升子序列 POJ--2533
- POJ 2533 Longest Ordered Subsequence (最长上升子序列 DP优化)
- POJ 2533 最长上升子序列 [动态规划 + 二分搜索]
- poj 2533 Longest Ordered Subsequence 最长上升子序列,nlogn复杂度
- POJ 2533 Longest Ordered Subsequence(最长上升子序列长度、O(nlogn))
- N - Longest Ordered Subsequence POJ 2533 (最长上升子序列 )
- Longest Ordered Subsequence 【poj-2533】【动态规划-最长上升子序列】
- poj 2533 最长上升子序列 多种姿势
- POJ_2533 Longest Ordered Subsequence【DP】【最长上升子序列】
- POJ 2533 最长上升子序列长度的求解 DP实现
- POJ 2533 求最长上升子序列长度 非DP 实现
- poj-2533 Longest Ordered Subsequence 【最长上升子序列】
- 最长上升子序列 POJ 2533(n*n与 nlogn)
- POJ 2533-Longest Ordered Subsequence(dp_最长上升子序列)
- 两道基础动态规划poj1458最长公共子序列和poj2533最长上升序列
- 最长上升子序列 POJ 2533(n*n与 nlogn)
- Longest Ordered Subsequence - POJ 2533 最长上升子序列
- poj 2533 Longest Ordered Subsequence(最长上升子序列)
- POJ 2533 Longest Ordered Subsequence 最长上升子序列