羅区P1030c ++再帰的なソリューションの先行順配列

P1030求めて行きがけの配置-ロサンゼルスバレー|新しい生態系のコンピュータサイエンス教育
https://www.luogu.org/problem/P1030

入力#1
BADC 
BDCA
出力#1

 あいうえお

この質問のタイトルとして、我々は解決するために、ツリーの再帰的な性質を使用することができます

既知の配列と、配列モチーフ配列は、我々は、連続的にルートノードの出力値をルートを見つけることができ、その後、左と右のサブツリーはそれをシーケンスの先行順を与えるために、それぞれの波

シーケンスモチーフ配列BDCA BADC後のこのようなサンプルデータ系列

最後に、文字「A」のその後のシーケンスは、このシーケンスのルートにある場合、順序内での「A」を見つけます

そして、Bは、DCシーケンスは、右部分木の順に横断され、モチーフ配列の左部分木に横断されます

したがって我々は、次に、それを波の両方のサブツリーのノードの左及び右サブツリー及び各後続のシーケンスの数を得ることができ

コアのコードは次の通りであります:

無効ゴー(文字 A、文字列 B)を// Aが後順トラバーサル順序で、Bは配列先行予約である
{
     int型LEN1、LENR、lenは、
    LEN = a.length();
     のためint型 I = 0 ; Iは、LENを< ; Iは++ IF([LEN 1 ] == B [I])
    {    
    LEN1 = ; I 
    COUT << [LEN 。1 ;] // ルートノードの出力値 
    LENR = LEN 。1 - ; LEN1
     IF( LEN1!= 0 
    { 
        文字列その1(A、0、lenl)、パート2(B、0 、lenl)。
        行く(その1、その2)。
    } 
    であれば(lenr!= 0 
    { 
        文字列その1(lenl、lenr)、パート2(B、lenl + 1 、lenr)。
        行く(その1、その2)。
    } 
    } 
}

即ちLEN1から始まるゼロの数の部分に文字列部分(0、lenl)は、文字列のコピーを表す[0] [0 + lenl-1]、

 

おすすめ

転載: www.cnblogs.com/Neptune0/p/11529030.html