最长公共字符串

来源:互联网 发布:编程实现快速排序算法 编辑:程序博客网 时间:2024/06/13 09:28
#include <iostream>  #include <string>  #include <stack>#include <algorithm>//#include "Customer.h"using namespace std;//最长公共字符串——动态规划//假设需要求得字符串为str1,str2。函数f(m,n)分别为 str1[m],str2[n]//结尾的公共字符串长度。//有以下递推公式:                                          递推边界//       f(m,n)=0    str1[m]!=str2[n]            f(0,n)=0;//       f(m,n)=f(m-1,n-1)+1    str1[m]!=str2[n]            f(m,0)=0;int main(){string str1;string str2;getline(cin, str1);getline(cin, str2);int c[100][100] = { 0 };for (int i = 0; i < str1.length(); i++){for (int j = 0; j < str2.length(); j++){if (str1[i] == str2[j]){if (i == 0 || j == 0)c[i][j] = 1;elsec[i][j] = c[i - 1][j - 1] + 1;}elsec[i][j] = 0;}}int besti = 0, bestj = 0;int count = 0;for (int i = 0; i < str1.length(); i++){for (int j = 0; j < str2.length(); j++){if (c[i][j] > count){count = c[i][j];besti = i;bestj = j;}} }cout << "最长公共字符串长度: " << count << endl;cout << "str1公共子串结束下标: " << besti << endl;cout << "str2公共子串结束下标: " << bestj << endl;return 0;}

0 0
原创粉丝点击