zoukankan      html  css  js  c++  java
  • 最长上升子序列模版

    总时间限制: 
    2000ms
     
    内存限制: 
    65536kB
    描述
    一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1a2, ..., aN),我们可以得到一些上升的子序列(ai1ai2, ..., 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
    
    来源
    翻译自 Northeastern Europe 2002, Far-Eastern Subregion 的比赛试题
     1 #include<cstdio>
     2 #include<cmath>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 int i,j,n,a[1005],f[1005],ans;
     7 int main()
     8 {
     9     scanf("%d",&n);
    10     for(i = 1;i <= n;i++)
    11     {
    12         scanf("%d",&a[i]); 
    13     }
    14     for(i = n - 1;i >= 1;i--)
    15     {
    16         for(j = n;j > i;j--)
    17         {
    18             if(a[j] > a[i])
    19             f[i] = max(f[i],f[j] + 1);
    20         }
    21         ans = max(ans,f[i]);
    22     }
    23     printf("%d",ans + 1);
    24     return 0;
    25  } 
  • 相关阅读:
    PAT Basic 1001
    PAT基础6-11
    PAT基础6-12
    PAT基础6-10
    修改正在进行遍历的列表
    使用管道和cronolog切割日志
    python logging模块
    python实现广度优先搜索和深度优先搜索
    多继承下的super()指向的不一定是直接父类
    python3 pandas DataFrame常见用法
  • 原文地址:https://www.cnblogs.com/rax-/p/9934033.html
Copyright © 2011-2022 走看看