最长上升子序列(DP)
来源:互联网 发布:中传在线 网络教育登录 编辑:程序博客网 时间:2024/04/27 17:03
问题描述
一个数的序列bi,当b1 < b2 < … < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, …, aN),我们可以得到一些上升的子序列(ai1, ai2, …, aiK),这里1 <= i1 < i2 < … < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是4,比如子序列(1, 3, 5, 8).
你的任务,就是对于给定的序列,求出最长上升子序列的长度。
思路:把问题分解成小问题(子问题),再通过自下而上(序列从左至右)的思路,解决小问题递推到解决大问题,最终得到最终解。
#include <iostream>#include <algorithm>using namespace std;const int MAXN = 1010;int a[MAXN]; int maxLen[MAXN];int main() { int N; cin >> N; for (int i = 1; i <= N; i++) { cin >> a[i]; maxLen[i] = 1; } for (int i = 2; i <= N; i++) { //每次求以第i个数为终点的最长上升子序列的长度 for (int j = 1; j < i; j++) { //察看以第j个数为终点的最长上升子序列 if (a[i] > a[j]) { maxLen[i] = max(maxLen[i], maxLen[j]+1); } } } //输出向量中的最大值 cout << * max_element(maxLen+1, maxLen + N + 1); return 0;} //时间复杂度O(N^2)
阅读全文
0 0
- 最长上升子序列 (dp)
- 最长公共上升子序列 (dp)
- 最长上升子序列(DP)
- HDU1087(最长上升子序列DP)
- 最长上升子序列LIS(dp)
- 最长上升子序列(DP+模板)
- YTU3135--最长上升子序列(dp)
- 最长上升子序列(dp)
- 最长公共上升子序列(dp)
- 最长上升子序列(DP)
- 最长上升子序列(Dp)
- 最长上升子序列 dp
- DP--最长上升子序列
- HDU 1087最长上升子序列(DP)
- poj2533--Longest Ordered Subsequence(dp:最长上升子序列)
- C - Mysterious Present(DP求最长上升子序列)
- 动态规划(DP)之最长上升子序列
- 算法练习--- DP 求解最长上升子序列(LIS)
- C语言学习-struct结构体定义你自己的数据类型
- NYOJ题目91-阶乘之和
- tensorflow_api_6:常用函数的速查表
- vmstat监控
- POJ 2393 Yogurt factory~贪心详解
- 最长上升子序列(DP)
- HDU 6113 度度熊的01世界 (DFS
- [Leetcode] 44. Wildcard Matching
- ueditor(1.4.3)的使用
- 操作系统对进程的了解
- 17多校contest 7- Euler theorem ( 数学规律
- 【AOJ】 0118
- 一个两天还没画好的河流图,问题出在哪里?
- 沧海一声笑