C 最大公共子串

2021-07-22 05:28:08 字數 779 閱讀 2812

這道演算法題目,見了好多遍了,也沒時間好好整理一下。這次稍微看了一點。

首先題目意思是這樣的:

兩個字串,求公共的連續子串的最大長度。

例如:s1:  abcd    s2:bcde  則最大公共子串長度是3

首先,讓我們看一下暴力解決:

static int common(string s1, string s2)}}

}return maxcount;

}

暴力解決,明顯是三層迴圈啊,所以是o(n^3)

下面,讓我們先看一下動態規劃的優化第一步:計算len[i][j]=len[i-1][j-1](前提是兩個字元相同的情況下)

static int commonmax(string s1, string s2)

}else}}

else}}

return max;

}

畫乙個簡圖看一下:

(s2)  b  c 

d  e

(s1)

a  0  0 

0  0

b  1 

0  0 

0c 0  2 

0  0

d  0 

0 3  0

最大公共子串行,最大公共子串,最大回文子串

1 兩個字串中最長公共子串行 該問題是動態規劃的經典問題,找出的公共序列不一定是連續的,參考資料很多,這裡就貼出公式和 做個簡單的筆記。設序列a,b的長度分別為n和m,l i,j 為a i b j 的最長公共子串行長度,有遞推公式 時間複雜度為o mn 如下 define n 50 intlcs c...

最大公共子串

problem description 從乙個給定的串中刪去 不一定連續地刪去 0個或0個以上的字元,剩下地字元按原來順序組成的串。例如 a xb aaa bbb xabb xaaabbb 都是串 xaaabbb 的子串。例子中的串不包含引號。程式設計求n個非空串的最長公共子串的長度。限制 2 n ...

最大公共子串

最大公共子串 最大公共子串長度問題就是 求兩個串的所有子串中能夠匹配上的最大長度是多少。比如 abcdkkk 和 baabcdadabc 可以找到的最長的公共子串是 abcd 所以最大公共子串長度為4。下面的程式是採用矩陣法進行求解的,這對串的規模不大的情況還是比較有效的解法。請分析該解法的思路,並...