P1439 [テンプレート]最長共通サブシーケンス(LCS)

通常の最長共通部分列の最初の一見

文字列AとBを考えると、彼らは最長共通部分列を見つけます

DPの練習:

[I] [j]が示すセットF長[1〜i]と最長共通サブシーケンスのB [1〜jを】

那么F [I] [J] = MAX(F [I-1]〜[J]、F [i]は[J-1])

上記に基づき、オンの場合A [I] = B [j]が、Fである[I] [J] = MAX(F [I] [J]、F [I-1] [J-1] +1)

コード:

 int型 iは= 1 ; iが<= N I ++ のためのINT J = 1 ; J <= Mであり、j ++ 
      { 
        DP [I] [J] = MAX(DPは[I- 1 ] [j]は、DP [I]、[J- 1 ])。
        もし(A1 [I] == A2 [J])
        DP [I] [J] = MAX(DP [I]、[J]、DP [I- 1 ] [J- 1 ] + 1 )。
      }

複雑さはO(MN)であります


 

データ1E5は、時間や空間のいずれかが爆発するので、だから、この質問は、私たちは別のアプローチを検討する必要があります

私たちは、この機能の質問を観察し、AとBは、要素がAとBは、この機能をフルに活用を考慮すると、同じであることを、完全な配列1〜を発見したのnされています。

最長共通サブシーケンスは後方ビットアラインメント、配列Bの要素の位置であるため、シーケンスがインクリメントされている場合、それは部分背面における位置の総数のB数を示します

おすすめ

転載: www.cnblogs.com/lcezych/p/11126816.html