zoukankan      html  css  js  c++  java
  • Antimonotonicity (Standard IO)

    题意/Description:

         给你1-N的一个排列,数列中的数字互不相等,要求找出最长的子序列a。

           满足a1 > a2,a2 < a3,a3 > a4,a4 < a5……

     

    读入/Input

           T 代表T组数据 T<=50
            每组数据一行: n 代表给你n个数,然后就是n个数 N<=30000

     

    输出/Output

           T行 每行一个数:
           对于每组数据输出最长子序列的长度

     

    题解/solution

           开始做的时候,没看清题目。要注意是子序列,暴力吧。

     

    代码/Code

    var
     a,f:array[1..30001] of longint;
     nm,n,ans:longint;
    
    procedure main;
    var
      i:longint;
    begin
      ans:=1;
      f[1]:=a[1];
      for i:=2 to n do
        begin
          if (ans+1) mod 2=1 then
            begin
              if a[i]>f[ans] then
                begin
                  inc(ans);
                  f[ans]:=a[i];
                end else f[ans]:=a[i];
            end else
            begin
              if a[i]<f[ans] then
                begin
                  inc(ans);
                  f[ans]:=a[i];
                end else f[ans]:=a[i];
            end;
        end;
      writeln(ans);
    end;
    
    procedure init;
    var
      i,k:longint;
    begin
      readln(nm);
      for k:=1 to nm do
        begin
          fillchar(f,sizeof(f),0);
          fillchar(a,sizeof(a),0);
          read(n);
          for i:=1 to n do
            read(a[i]);
          main;
          readln;
        end;
    end;
    
    begin
      init;
    end.
    



  • 相关阅读:
    C语言的存储类别和动态内存分配
    C语言中复杂的声明
    C语言中typedef的解释_2
    C语言中类型限定符
    C语言文件I/O和标准I/O函数
    C语言中存储类别、链接与内存管理
    C++中static与const成员
    C++多态、虚函数、纯虚函数、抽象类
    sizeof结构体
    杂类
  • 原文地址:https://www.cnblogs.com/zyx-crying/p/9319646.html
Copyright © 2011-2022 走看看