PTA 兩個字串的所有最長公共子串 20分

2021-10-05 05:19:37 字數 831 閱讀 1770

因為要求輸出路徑,所以需要儲存中間過程。

由於是連續子串,因此可以儲存最大子串條件下的末尾字元的位置,最後根據最大長度輸出即可。

初次變為最大子串的時候,初始化乙個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 兩字...