通常の最長共通部分列の最初の一見
文字列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数を示します