最长上升子序列
2014-02-11 14:57
141 查看
最长上升子序列
Time Limit: 3000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
一个数的序列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)。
你的任务,就是对于给定的序列,求出最长上升子序列的长度。
输入
输入的第一行是序列的长度N (1 <= N <= 1000)。第二行给出序列中的N个整数,这些整数的取值范围都在0到10000。
输出
最长上升子序列的长度。
示例输入
7 1 7 3 5 9 4 8
示例输出
4
#include <stdio.h> #include <string.h> #define MAX 1000 int b[MAX]; int len[MAX+10]; int main() { int n,m,i,j; scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&b[i]); len[1] = 1; for(i=2;i<=n;i++) { m=0; for(j=1;j<i;j++) if(b[i]>b[j]) if(m<len[j]) m = len[j]; len[i] = m + 1; } int flag = -1; for(i=1;i<=n;i++) if(flag<len[i]) flag = len[i]; printf("%d\n",flag); return 0; }
相关文章推荐
- HDU 1025.Constructing Roads In JGShining's Kingdom【最长上升子序列n×logn算法】【1月6】
- 【动态规划】最长上升子序列(LIS)
- 最长上升子序列练习 - from lanshui_Yang
- hdu 1160 dp (二维最长上升子序列 记录路径
- 1759:最长上升子序列
- rnqoj-28-合唱队形-最长上升子序列
- HDU 6197 array array array(最长上升或下降子序列)
- LIS最长上升子序列
- 最长上升子序列问题 (LIS)
- HDU 1950最长上升子序列 学习nlogn
- Longest Ordered Subsequence 最长上升子序列
- 最长上升子序列之O(n^2)算法
- bsoj2234 最长上升子序列nlogn算法
- HDU 1087(最长上升子序列)
- 最长上升子序列
- HOJ 1760 (最长上升子序列)
- 最长上升子序列
- 【bzoj 3173】[Tjoi2013]最长上升子序列
- HDU 1160 FatMouse's Speed (最长上升子序列)
- LCS(最长公共子序列)、LIS(最长上升子序列)、LCIS(最长公共上升子序列)