兩子串的公共子串行

2021-09-18 04:19:29 字數 911 閱讀 5294

兩子串的公共子串行,子串行的問題難比子串,暴力也難搞,動態規劃**好,

1.確定dp[i][j]:dp[i][j]表示字串str1的[0,i]和str2的[0,j]的最大公共子串行

2.填已經確定的dp值,這裡是第一行str1的[0,n1]和str2的[0]的最大公共子串行,第一列str1的[0]和str2的[0,n2]的最大公共子串行,

3.找遞迴關係,根據已知求未知,dp[i][j]可能來自三個方向,左上方dp[i-1][j-1],上方dp[i-1][j],左方dp[i-1][j],選擇三者最大值,想不明白的話真的難啊

4.dp[n1][n2]的返回的是str1和str2這道題要返回公共子串行,需要根據dp表倒推從dp[0][0]到dp[n1][n2]的路徑

// 時間複雜度o(m*n),空間複雜度

public

class

comsubsequence

for(

int i =

1; i != n; i++

)for

(int i =

1; i != m; i++)}

return dp;

}public string lcse

(string str1, string str2)

else

if(n >

0&& dp[m]

[n]== dp[m]

[n -1]

)else

}return string.

valueof

(res);}

public

static

void

main

(string[

] args)

}

求公共子串行和公共子串

輸入 第一行給出乙個整數n 0最長公共子串行長度。每組結果佔一行。樣例輸入 2asdf adfsd 123abc abc123abc 樣例輸出36 輸入兩個字串,輸出它們的最長子字串。求公共子串以及求公共子串的長度 include include define n 100 char a n b n ...

最長回文子串 回文子串行 公共子串行

一 最長回文子串 連續 1.manacher演算法 見前面 2.動態規劃 bool p 100 100 for int i 0 i 2 reutrn s.substr start,maxlength 二 最長回文子串行 不連續 1.遞迴 2.動態規劃 3.將字串反轉,再求兩個字串的最長公共子串行lc...

最長公共子串行(不是子串)

實現 public class lcs for int i 0 i n i for int i 0 i 下文 一 作用 最長公共子串行的問題常用於解決字串的相似度,是乙個非常實用的演算法,作為碼農,此演算法是我們的必備基本功。二 概念 舉個例子,cn blogs這個字串中子序列有多少個呢?很顯然有2...