标题:最大公共子串
最大公共子串长度问题就是:
求两个串的所有子串中能够匹配上的最大长度是多少。
比如:"abcdkkk" 和 "baabcdadabc",
可以找到的最长的公共子串是"abcd",所以最大公共子串长度为4。
下面的程序是采用矩阵法进行求解的,这对串的规模不大的情况还是比较有效的解法。
请分析该解法的思路,并补全划线部分缺失的代码。
改题目以空间换时间。为什么想到用矩阵法去记录状态,因为题目要求的是最大,我们如果用暴力去做这道题的话,如果分别选两个字符串的开始为i,j,那么其将记录i+1和j+1是否相等,等到了以i+1和j+1为开始时,又得再判断一次,所以想到可以把前面判断的给记录下来,这里i,j状态的前面是i-1,j-1;该算法实际上是一个简单动态规划
#include<iostream>
#include<string>
using namespace std;
int buf[256][256];
int main()
{
string str1,str2;
int i,j;
int max = 0;
int len1,len2;
cin >> str1;
cin >> str2;
len1 = str1