zoukankan      html  css  js  c++  java
  • 【tyvj】P1049 最长不下降子序列


    时间: 1000ms / 空间: 131072KiB / Java类名: Main


    描述

    求最长不下降子序列的长度


    输入格式

    第一行为n,表示n个数 第二行n个数


    输出格式

    最长不下降子序列的长度


    测试样例1

    输入

    3

    1 2 3

    输出

    3


    备注

    N小于5000

    for each num <=maxint


    我们弄一个数组f[i]表示前i个数的最长长度,一开始全都置为1是他自己本身。然后先对0~n-1循环。i =0 ~ n-1对于每一个a[i]在他后面的数设为a[j] (j>i)

    如果a[j]>a[i]那说明是有可能被算成最长子序列的。

    此时对于a[i]而言无非两种情况,一种是跟着j混,一种是不跟。所以f[j]=max(f[i]+1,f[j])

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     int n,max=0;
    10     cin>>n;
    11     int f[5000],a[5000];
    12     for (int i=0; i<n; ++i)
    13         cin>>a[i];
    14 
    15     for (int i=0;i<n;++i)
    16         f[i]=1;
    17     for (int i=0; i<n-1; ++i) {
    18         for (int j=i+1;j<n;++j)
    19             if (a[j]>=a[i]&&f[i]+1>f[j])
    20                 f[j]=f[i]+1;
    21     }
    22     for (int i=0; i<n; ++i)
    23         if (max<f[i])
    24             max=f[i];
    25 
    26     cout<<max<<endl;
    27     return 0;
    28 }
  • 相关阅读:
    算法
    如果业界中不用高级算法和数据结构,那为什么还要学?
    CentOS 7 运行级别切换
    ECharts笔记
    Vue+TypeScript学习
    TypeScript深入学习
    TypeScript基础
    检测数据类型的方法
    前端提高性能的方式
    柯里化
  • 原文地址:https://www.cnblogs.com/gc812/p/5764565.html
Copyright © 2011-2022 走看看