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

2021-08-28 09:15:41 字數 1022 閱讀 3353

編寫函式,獲取兩段字串的最長公共子串的長度 - csdn部落格  

下面不多說,直接上**。

// vivo-找到兩個字串中的最長公共子串.cpp

/*找出兩個字串中最大公共子字串

如"abccade","dgcadde"的最大子串為"cad"

*//*

分析思路:  

使用動態規劃演算法

參考自csdn部落格

*/#include "pch.h"

#include

#include

#include

#include

#include

#include

using namespace std;

int **getdp(char str1, char str2);

int findlargestsizecommonstring(string str1, string str2);

int main()

system("pause");

return 0;

}//獲取dp矩陣的函式

//重點在於如何返回乙個二維陣列

int **getdp(const char *str1, const char *str2)

//第一行賦值

for (int j = 0; j < strlen(str2); j++)

//其餘位置賦值為左上角加1 

for(int i = 1; i < strlen(str1); i++)

for (int j = 1; j < strlen(str2); j++)

return dp;

}//發現兩個字串最長的公共子串和其長度的函式

int findlargestsizecommonstring(string str1, string str2)}}

cout << str1.substr(end - maxlen + 1, maxlen) << endl;

return maxlen;

}

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

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

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

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

兩個字串的編輯距離 動態規劃

字串的編輯距離,又稱為levenshtein距離,由俄羅斯的數學家vladimir levenshtein在1965年提出。是指利用字元操作,把字串a轉換成字串b所需要的最少運算元。其中,字元操作包括 1 刪除乙個字元 2 插入乙個字元 3 修改乙個字元 3 如果不一樣,那麼必定要經過一次操作 編輯...