最長の2つの文字列の同じシーケンスを求めます

/ *
// 7 ABDCDCBABC CBABCDCDBA
最長シーケンス(必ずしも連続していない)と同じ
最後の位置DPを出力することができる2次元テーブルをプログラムダイナミックを使用して
* /
の#include <iostreamの> する#include <string>は 、使用して名前空間STD INT N-、M、 文字列A、B、 INTメイン(){ CIN >> A >> B; N-a.size =(); M = b.size(); INT F [N- + 1] [M + 1]; (INT I = 0、I < = M; I ++){ F [0] [I] = 0; } ため(INT I = 0; I <= N; I ++){ F [I] [0] = 0; } ため(INT I = 1。 I ++); I <= N (INT J = 1; J <= M; J ++) (A IF == B [J-1])F [I] [J] = F [I- [I-1] 。。1] [-J 1] + 1; 他F [I] [J] = MAX(F [1-I]、[J]、F [I]、[J-1]); COUT << F [N-] [ M] << ENDL; のための(INT I = 0; I <= N; I ++) のための(INT J = 0; J <= M。J ++){ coutの<< F [i]の[j]は、 IF(!J%M == 0 && J = 0)COUT << ENDL。 } 0を返します。 }

  

おすすめ

転載: www.cnblogs.com/Stephen-Jixing/p/12628365.html