#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,我們定義...