【转】http://blog.youkuaiyun.com/zxy_snow/article/details/6037072
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <memory.h>
#define MAXLEN 300
using namespace std;
int maxlen[MAXLEN][MAXLEN];
int main(void)
{
char str[MAXLEN],line[MAXLEN];
int lens,lenl;
while(cin >> str)
{
memset(maxlen,0,sizeof(maxlen));
cin >> line;
lens = strlen(str);
lenl = strlen(line);
for(int i=0; i<lens; i++)
for(int k=0; k<lenl; k++)
if( str[i] == line[k] )
maxlen[i+1][k+1] = maxlen[i][k] + 1;
else
if( maxlen[i+1][k] > maxlen[i][k+1] )
maxlen[i+1][k+1] = maxlen[i+1][k];
else
maxlen[i+1][k+1] = maxlen[i][k+1];
cout << maxlen[lens][lenl] << endl;
}
return 0;
}
本博客介绍了一个字符串匹配算法,通过遍历输入字符串和模式字符串,使用动态规划计算最长公共子串长度。
19万+

被折叠的 条评论
为什么被折叠?



