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

2021-06-25 09:57:42 字數 956 閱讀 8637

#include "stdafx.h"

#include "windows.h"

#include #include #include #include "assert.h"

using namespace std;

//時間複雜度和空間複雜度均為 o(p*q) 其中p、q分別為兩個字串的長度,有待改進

//獲取兩個字串公共子串

int getmaxcommonsubstr(string &strfirst, string &strsecond)

int i, j;

int ilenfirst = strfirst.length();

int ilensecond = strsecond.length();

int imaxcmnlne = 0; //最大公共子串長度

string strlcs = ""; //儲存最大公共子串

char chfirst, chsecond;

string **num = new string *[ilenfirst];

assert(num!=null);

for(i=0; iimaxcmnlne) //如果當前獲得的最大公共子串比以前的最大的大,則更新最大公共子串長度

else if(num[i][j].length()==imaxcmnlne) //獲取到目前為止多個當前最大公共子串,用,分得開

}} }

//記憶體**

for(i=0; i>inputstr1;

stream>>inputstr2;

iresultlen = getmaxcommonsubstr(inputstr1, inputstr2);

cout

return 0;

}

動態規劃演算法 計算兩個字串的編輯距離

兩個字串的編輯距離即為兩個字串s1,s2經過插入 刪除和替換操作使得第乙個字串s1與第二個字串s2相同所需的最短操作次數。s1字元個數為m,s2字元個數為n 利用動態規劃的方法,考慮從字串的最後乙個字元開始進行推導,當最後乙個字元相同時,此時問題即為求s1 m 1 與s2 n 1 的編輯距離 而若最...

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

編寫函式,獲取兩段字串的最長公共子串的長度 csdn部落格 下面不多說,直接上 vivo 找到兩個字串中的最長公共子串.cpp 找出兩個字串中最大公共子字串 如 abccade dgcadde 的最大子串為 cad 分析思路 使用動態規劃演算法 參考自csdn部落格 include pch.h in...

動態規劃之兩個字串的最大子串行

求兩個字串的最大子串行 1 子串行和子字串有區別,子字串 子串 必須連續,列如 s1 abcdab s2 bbcdaab s1和s2最大子串行有 bcda bcdb cdab abab bcab 子串行bcda是s1和s2的乙個lcs s1和s2最大子字串是 bcda 為了找到最長的lcs,我們定義...