動態規劃演算法求解最大公共字串

2021-07-23 04:12:36 字數 910 閱讀 7363

第一次寫部落格,為了激勵自己努力。

前幾天在牛客上看到乙個演算法題:

查詢兩個字串的最大公共字串長度。

自己是演算法小白,學習了下動態規劃的思想,寫了個入門級的**。

1.先用個例子簡單梳理下分析過程,首先將字串str1=「sdjhfdshklhfjk」和字串str2 =「dffdshklu」以矩陣的形式排列(ps:後悔大學沒好好學線代),然後按行從上到下,按列從左至右進行迴圈,不等的位置設為0,相等的位置由動態規劃的思想(一篇很好的介紹動態歸化演算法的文章)設為res[i-1,j-1]+1,如

////// 動態規劃 -- 求兩個字串的最大公共子串

///private

static

void

dynamic()

else

}else

if (res[i, j] > max)}}

if (max == 0)

childstr = str2.substring(line - max+1, max);

console.writeline("最大公共字串:"+childstr+",長度為:"+max);

console.readline();}}

}第一次寫,mark

動態規劃 最大公共字串

問題定義 乙個字串s,去掉零個或者多個元素所剩下的子串稱為s的子串行。最長公共子串行就是尋找兩個給定序列的子串行,該子串行在兩個序列中以相同的順序出現,但是不必要是連續的。例如序列x abcbdab,y bdcaba。序列bca是x和y的乙個公共子串行,但是不是x和y的最長公共子串行,子串行bcba...

Python 動態規劃演算法求解最長公共子串行

前言 在網上看到一道360的秋招真題,題目如下 仔細讀題後發現這是一道求解最長公共子串行的問題,最好使用動態規劃演算法。小b坐火車,從起點到終點的車站序列已知,期間他睡了兩覺,到終點的時候還在睡,也就是說中間他醒了兩次,這兩次清醒的時間,有兩個車站子串行,現在讓我們分析這兩段路是去的時候看到的,還是...

動態規劃演算法求兩個字串的最大公共子串

include stdafx.h include windows.h include include include include assert.h using namespace std 時間複雜度和空間複雜度均為 o p q 其中p q分別為兩個字串的長度,有待改進 獲取兩個字串公共子串 in...