DP [I] [J] =最大{DP [I-1] [JV [I] + C [i]は、DP [I-1]〜[J]}。
ため(I = 1; Iは<= N-; I ++が){ ため(J = V [i]は、J <= V; J ++){ // Vに開始これは、V [i]があることに留意されたい IF(J> = V [I]) DP [J] =最大{DP [J]、DP [JV [I] + C [I]}; } }
DP [J] =最大{DP [J]、DP [JV [I] + C [I]}。
DP [I] [J] =最大{DP [I-1] [VKの*のV [I] + Kの*のC [] | 0 <= K <= N [I]};(kはIを表し片K)への商品。
用(i = 1; iが<= N; iは++ ){ ため(J = V; J> = 0; j-- ){ ため(K = 1; K <= N [i]は、++ k個){ 場合(J > = k個*のV [i])と DP [I] [J] = MAX(DP [I-1] [VKの*のV [I] + Kの*のC [I]) } }
F(4)F(3)+ F(2)+ F(1)=。
最長共通部分列: 最長共通部分列問題の性質上、我々はDPを指定することも[i] [j]は、i番目の文字列1と文字列2の前に最長共通サブシーケンス最初のj個の文字です長さは、以下以降Iに関する -1とj-1、ので、この時間は、我々は、一般的に、I = 1、J = 1はI <= LEN1、J <=開始するからLEN2を。 私はCH1で[I -1] = CH2 [-J 1]、次にDP [I] [j]は= DPを[I-1] [J-1] + 1。
すべてのこの時間、I = DP [i]が0またはJ = 0 [J]に= 0 ; 0; I = 0又はJ = 0 ; 持っDP = DP [I] [J] DP = [1-I] [ J-1] + 1; I > 0 とj> 0およびCH1は[I-1] = CH2 [J-1。]; DP [I] [J] =最大{DP [I-1]〜[J]、DP [I]、[J-1] }; I> 0 とj> 0およびCH1 [I-1] = CH 2 [J-1] !;
3 、最大シーケンスを発行 .......... A2、配列A1が与えられると、 Qiuzi配列最も大きな問題とDP [i]はサブシーケンスの終わりを示し、AI、maxは最大値であります配列と コア: 入力データは全て負シーケンスの最大値である場合の最大値である 2があれば、正 用(I = 1; I <= N; I ++ ){ DP [I]は = DP [I -1] + AI; IF(DP [I] <0 ) DP [I] = 0 ; IF(MAX < DP [I]) 最大 = DP [I]; }
2 、最大昇順または降順配列 配列A1、A2 .......... AN所与; DP [I]は、最長シーケンスの長さが上昇(下降反対側)の端部aiを表す コアコード: 以下のための(I = 1; I <= N; I ++は){ DP [I] = 1 ; のための(K = 1; K <I、K ++ ){ IF(AK <AI && DP [I] <DP [K] + +1 ) DP [I] = DP [K] + +1 ; } }