因為要求輸出路徑,所以需要儲存中間過程。
由於是連續子串,因此可以儲存最大子串條件下的末尾字元的位置,最後根據最大長度輸出即可。
初次變為最大子串的時候,初始化乙個vector
,後續長度等於最大長度時候,向vector
中新增末尾元素位置。
最後根據長度和位置,將所有子串放進容器,排序輸出。
#include
#include
#include
#include
#include
#include
using
namespace std;
const
int max_n =
100;
string a, b;
int dp[max_n]
[max_n]
;int
main()
else
if(cnt == dp[i]
[j])
}else}}
vector<
int>
::iterator it;
vector res;
for(it = ans.
begin()
; it != ans.
end(
); it++
) res.
push_back
(s);}if
(cnt ==0)
cout <<
"no\n"
;else
}return0;
}
求兩個字串最長公共字串
package com.test 求兩個字串最長公共字串,演算法 兩個字串形成乙個矩陣,將兩個字元不匹配的位置標記為0,c i j 中兩個字元相匹配的位置標記為n,其中n c i 1 j 1 1,其中沿正對角線方向最長的序列為兩個字串的最長公共子串行 public class lcs public ...
兩個字串的最長公共子串行
解題分析 設兩個序列x y 用lsc x,y 表示最長公共子串行。1.如果xn yn。則該元素一定存在於公共子串行中,所以可化為尋求子問題lsc x 1,y 1 用公式可表示為lsc x,y lsc x 1,y 1 1。2.如果xn yn。則該元素不存在於公共子串行中,所以轉而去尋求兩個子問題,即l...
java求兩個字串最長公共字串
思路 將str1的字元用兩個for迴圈用substring i,j 逐段截出,再與str2內字串比較,從而選出最長公共的字串,從而輸出字元內串 public class similarstring for int i 0 i str1.length 1 i system.out.println 兩字...