国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

字符串應(yīng)用之最長公共子序列和最長公共子串

2019-11-14 08:47:14
字體:
供稿:網(wǎng)友

最長公共子序列

Xm表示X串的前m個(gè)字符,即x0,x1...xm?1 LCS(Xm,Yn)即X的前m個(gè)字符和Y的前n個(gè)字符的最長公共子序列。

動(dòng)規(guī)方程如下: LCS(Xm,Yn)={LCS(Xm?1,Yn?1)+Xmmax(LCS(Xm?1,Yn),LCS(Xm,Yn?1)),xm=xn,xm≠yn

//最長公共子序列int longestCommonSubsequence(string A, string B) { int m = A.size(); int n = B.size(); vector<vector<int>>dp(m + 1, vector<int>(n + 1)); for (int i = 0; i < m; ++i) { for (int j = 0; j < n; ++j) { if (A[i] == B[j]) { dp[i + 1][j + 1] = dp[i][j] + 1; } else { dp[i + 1][j + 1] = max(dp[i][j + 1], dp[i + 1][j]); } } } int i = m - 1; int j = n - 1; string s; //記錄最長子序列并打印 while (i != -1 && j != -1) { if (A[i] == B[j]) { s += A[i]; --i; --j; } else { if ( (dp[i+1][j ] > dp[i ][j+1])) { --j; } else { --i; } } } string res(s.rbegin(), s.rend()); cout << res << endl; return dp[m][n]; // write your code here}

最長公共子串

最長公共子串,由于匹配的字串必須在A、B串都是連續(xù)的,因此在更新dp[i][j]的時(shí)候只能從dp[i-1][j-1]。

//最長公共字串int longestCommonSubstring(string &A, string &B) { // write your code here size_t m = A.size(); size_t n = B.size(); int res = 0; vector<vector<int>> dp(m, vector<int>(n)); for (int i = 0; i < static_cast<int>(m); ++i) { for (int j = 0; j < static_cast<int>(n); ++j) { if (A[i] == B[j]) { if (i>0 && j>0) { dp[i][j] = dp[i - 1][j - 1] + 1; } else { dp[i][j] = 1; } } if (res < dp[i][j]) { res = dp[i][j]; } } } return res;}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 文化| 长沙市| 白玉县| 雷波县| 平泉县| 岳阳县| 大城县| 甘洛县| 西城区| 永川市| 景东| 长子县| 桦川县| 南雄市| 犍为县| 开远市| 炎陵县| 满城县| 永登县| 四平市| 桐乡市| 佛坪县| 沁阳市| 托克逊县| 孟连| 赤城县| 汤原县| 锦州市| 江油市| 贡嘎县| 油尖旺区| 峨边| 麦盖提县| 合水县| 南投县| 江油市| 宝兴县| 荃湾区| 贵德县| 天津市| 雷州市|