欢迎使用CSDN-markdown编辑器
2016-03-13 10:51
211 查看
最长子序列问题
Longest Ordered Subsequence
Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB
Total submit users: 2415, Accepted users: 2061
Problem 10001 : No special judgement
Problem 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 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 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)
算法思路:
1.进行遍历数组,求出每一个元素前的最长子序列长度,将自己计入序列,保存该最大值
2.在此遍历数组,输出最长子序列的最大值
具体实现:
外层循环实现遍历
内层循环查找该元素前的最长子序列的长度
将该元素加入该序列,记录当前元素的最长子序列的长度
C/C++代码:
Longest Ordered Subsequence
Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB
Total submit users: 2415, Accepted users: 2061
Problem 10001 : No special judgement
Problem 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 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 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)
算法思路:
1.进行遍历数组,求出每一个元素前的最长子序列长度,将自己计入序列,保存该最大值
2.在此遍历数组,输出最长子序列的最大值
具体实现:
外层循环实现遍历
内层循环查找该元素前的最长子序列的长度
将该元素加入该序列,记录当前元素的最长子序列的长度
C/C++代码:
#include <stdio.h> int main () { int n,i,j,max=0; int arr[1000],b[1000]; scanf("%d",&n); for (i=0;i<n;i++) { scanf ("%d",&arr[i]); b[i]=0; } for (i=0;i<n;i++) { max=0; for (j=0;j<n;j++) { if ((arr[i]>arr[j])&&(max<b[j])) max=b[j]; } b[i]=max+1; } max=0; for (i=0;i<n;i++) if (b[i]>max) max=b[i]; printf("%d",max); return 0; }
相关文章推荐
- Android6.0权限管理-PermissionsDispatcher
- SZU2
- DSS中间件介绍
- Linux基础--权限管理
- 项目四-用循环求(1)
- MySQL数据库总结(2)增删改查
- 12.程序运行为啥需要内存
- Java系统调优:内存管理与垃圾回收
- android ui
- 浏览器工作原理详解
- BaseAdapter的使用与优化
- 计数排序、桶排序和基数排序
- 试用EVGA公版GTX980
- 堆优化SPFA
- c++11的使用心得(二)---右值引用
- Bootstrap 栅格系统
- 在RHEL7或者OL7上,Documents Fail to Index with DRG-11207: user filter command exited with status 127
- 不停止MySQL服务增加从库的两种方式【转载】
- 在CentOS上安装Java环境详解
- JavaSE知识集锦(1)深拷贝与浅拷贝