12テーマの基礎DP1 N [Kuangbinは飛ぶためにあなたを取る] - 最長順序付きサブシーケンスPOJ - 2533(立ち上がり最長シーケンスLIS)

最長サブシーケンス順序- N 2533 - POJ

トピックへのリンク:https://vjudge.net/contest/68966#problem/N

トピック:

最長の注文サブシーケンスA1 <A2 <... <AN場合は、数字の列がaiをソート。配列は(A1、A2、...、Anは与えられた数の配列を与える ) 任意の配列(AI1、AI2、...、AIKである )、 1 <= I1 <I2 <... <IK <= N 例えば、シーケンス(1,7,3,5,9,4,8​​)は、例えば、順序付けられた配列を有します。グラム。、(1,7)、(3,4,8)および他の多くの。すべての最長の長さが4、Eのサブシーケンスを命じました。グラム。、(1,3,5,8)。

     数字の場合は所定の配列、あなたのプログラムは、順序付けられたシーケンスのその最長の長さを見つける必要があります。
入力
     入力ファイルの最初の行は、Nの配列長を含みます Nの整数、範囲、0から10,000のスペースで区切られた各-第二列は、配列の要素を含みます。1 <= N <= 1000が
得られる
     所定の配列の順序付けられた配列の最長の長さ-出力ファイルは整数を含まなければなりません。
サンプル入力

    。7
     。1. 8 7 3 4 5 9

出力例

    4

考える:LISの問題を、我々は注意DP 1の[i]の初期値を支払わなければなりません。

// 
// 2019年8月8日に羽生によって作成されます。
//
する#include <アルゴリズム> 
書式#include <iostreamの> 
の#include <cstdioを> 
する#include <CStringの> 
の#include <キュー> 
の#include < 設定 > 
書式#include <math.h>の
書式#include <マップ>
 使用して 名前空間はstd; 
typedefの長い 長いLL。
const  int型 MAXN = 1000年 + 7 #define MAX 0x3f3f3f3f
 INT のmain()
{ 
    int型のT。
    同時に(〜のscanf(" %dの"、&T))
    { 
        int型DP [MAXN]、[MAXN]。
        memsetの(DP、0はsizeof (DP))。
        以下のためにint型私= 0 ; iがTを<; Iは++ 
        { 
            scanf関数(" %のD "、および[I])。
        } 
        のためにint型 i = 0 ; iはTを<; iは++ 
        { 
            DP [I] = 1 以下のためのint型 J = 0 ; J <= iであり、j ++
            { 
                場合([J] < [i])と
                    DP [I] = MAX(DP [I]、DP [J] + 1 )。
            } 
        } 
        int型 MAXX = - 1 以下のためにint型 i = 0 ; iはTを<; iは++ 
        { 
            MAXX = MAX(MAXX、DP [I])。
        } 
        のprintf(" %d個の\ n " 、MAXX)。
    } 
    戻り 0 
}

 

おすすめ

転載: www.cnblogs.com/Vampire6/p/11324300.html