動態規劃之最長公共子串行和最長公共子串

2021-10-23 11:19:05 字數 1069 閱讀 9896

最長公共子串行,指兩個字串,子串行中最長的字串。(不一定是連續字元)

//最長公共子串行長度

intlcs_length

(const string &str1,

const string &str2,vectorint>> veca)

for(j =

0; j <= str2.

length()

; j++

)for

(i =

1; i <= str1.

length()

; i++

)else}}

return veca[str1.

length()

][str2.

length()

];}//該函式找出所有的lcs的序列,並將其存在vector中

void

printalllcs

(string &str1, string &str2,

int i,

int j,

vectorint>

>

&veca, string lcs_str)

else}}

all_lcs.

insert

(lcs_str)

; cout <<

*all_lcs.

begin()

<< endl;

}

最長公共子串及長度,要求連續。

void

getlcs

(string str1, string str2)

else

if(record[i]

[j]> maxlen)

} cout << maxlen << endl;

cout << str1.

substr

(maxend - maxlen+

1, maxlen)

<< endl;

}

動態規劃之最長公共子串行 最長公共子串

題目 如果字串1的所有字元按其在字串中的順序出現在另外乙個字串2中,則字串1稱之為字串2的子串行。注意,並不要求子子串行 字串1 的字元必須連續出現在字串2中。請編寫乙個函式,輸入兩個字串,求它們的最長公共子串,並列印出最長公共子串行。例如 輸入兩個字串bdcaba和abcbdab,字串bcba和b...

動態規劃之最長公共子串行

最長公共子串行簡介 舉例說明並分析 塊測試結果 乙個給定序列的子串行是在該序列中刪去若干元素後得到的序列,確切的說,若給定序列x 則另一串行z x的子串行是指存在乙個嚴格的下標序列,使得對於所有的j 0,1,k 1有zj xij。例如序列z 是序列x 的子串行,相應的遞增下標序列維。最長公共子串行問...

動態規劃之最長公共子串行

給出兩個字串,求出這樣的一 個最長的公共子串行的長度 子串行 中的每個字元都能在兩個原串中找到,而且每個字元的先後順序和原串中的 先後順序一致。sample input abcfbc abfcab programming contest abcd mnp sample output 4 2 0對於動...