與之前c語言版本相比主要是使用了stl容器.另外下標的計算方式也有改動:記錄表c(矩陣)中第0行和第0列都初始化為0作為輔助.
因此第i行對應的是字串x的第i-1個元素,與原圖對比即明白:
由於string模板的限制,字串從0下標開始,因此x[0]對應矩陣第1行.
明白這點,y亦同理.
#include
#include
#include
using
namespace
std;
int lcs(string s1, string s2)
}/* 輸出除錯
for (int i = 0 ; i <= len1; i++)
cout << endl;}*/
return c[len1][len2];
}int main()
最長公共子串行LCS C 題解
題目大意 兩個字串a和b,需要統計出其中公共子串行的最長是多少。注意 所謂子串行,指的是出現的先後順序一樣,但可以不連續出現。比如對於s abdef,其中adf是s 的乙個子串行,因為對於adf中每個字元,其出現的先後順序與s中先後順序一致。最長公共子串行 longest common subseq...
最長公共子串行 最長公共子串
1 最長公共子串行 採用動態規劃的思想,用乙個陣列dp i j 記錄a字串中i 1位置到b字串中j 1位置的最長公共子串行,若a i 1 b j 1 那麼dp i j dp i 1 j 1 1,若不相同,那麼dp i j 就是dp i 1 j 和dp i j 1 中的較大者。class lcs el...
最長公共子串行 最長公共子串
1.區別 找兩個字串的最長公共子串,這個子串要求在原字串中是連續的。而最長公共子串行則並不要求連續。2 最長公共子串 其實這是乙個序貫決策問題,可以用動態規劃來求解。我們採用乙個二維矩陣來記錄中間的結果。這個二維矩陣怎麼構造呢?直接舉個例子吧 bab 和 caba 當然我們現在一眼就可以看出來最長公...