poj2533——Longest Ordered Subsequence(最长递增子序列模板)
2016-04-21 15:20
489 查看
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
7
1 7 3 5 9 4 8
Sample Output
4
熟悉题型,练习模板
o(n^2)算法
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
熟悉题型,练习模板
o(n^2)算法
#include <stdio.h> #include <math.h> #include <string.h> #include <stdlib.h> #include <iostream> #include <sstream> #include <algorithm> #include <set> #include <queue> #include <stack> #include <map> #include <bitset> #define MAXN 1005 using namespace std; int a[MAXN],dp[MAXN]; int main() { int n,i,j,max,ans; while(~scanf("%d",&n)) { memset(dp,0,sizeof(dp)); dp[1]=1; ans=1; for(i=1;i<=n;++i) scanf("%d",&a[i]); for(i=2;i<=n;++i) { max=0; for(j=1;j<i;++j) { if(dp[j]>max&&a[j]<a[i]) max=dp[j]; } dp[i]=max+1; if(dp[i]>ans) ans=dp[i]; } printf("%d\n",ans); } return 0; }
相关文章推荐
- Android UUID主键生成器
- Riak - 使用篇(1)
- UI for iOS (二) -- 根据text动态获得label的宽高
- 进击的KFC:利用Xib来创建UItableviewCell,并实现cell的自适应高度
- Volley XML请求XmLRequest
- UI for iOS(一)-- RGB十六进制字符串转换UIColor
- Creating a SharePoint Sequential Workflow
- max-Queue(堆)
- android studio build cpu 99%运行问题
- I.MX6 Ethernet UI patch failed
- Range Sum Query - Mutable
- Delegation Token can be issued only with kerberos or web authentication
- UIView层次管理(sendSubviewToBack,bringSubviewToFront)
- ERROR OGG-00446 No valid log files for current redo sequence 20415, thread 1, error retrieving re
- Handler,Message,MessageQueue,Looper之间的相爱相杀
- iOS-UITableView 设置分割线长度和颜色
- POJ 2299 Ultra-QuickSort 树状数组
- java web笔记——request&response
- [IOS 开发] NSOperationQueue常用方法
- Android学习笔记(40):SharedPreferences存储key-value对