第一次寫部落格,為了激勵自己努力。
前幾天在牛客上看到乙個演算法題:
查詢兩個字串的最大公共字串長度。
自己是演算法小白,學習了下動態規劃的思想,寫了個入門級的**。
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...