标题:最大公共子串
有些地方写的时候没弄太懂,去查了查资料,有个memset函数到底是怎么用的,什么情况下用的呢
最大公共子串长度问题就是:
求两个串的所有子串中能够匹配上的最大长度是多少。
比如:"abcdkkk" 和 "baabcdadabc",
可以找到的最长的公共子串是"abcd",所以最大公共子串长度为4。
#include <stdio.h>
#include <string.h>
#define N 256
int f(const char* s1, const char* s2)
{
int dp[N][N];
int len1 = strlen(s1);
int len2 = strlen(s2);
int i,j;
memset(dp,0,sizeof(int)*N*N);//这个memset应该怎么去理解
int max0 = 0;
for(i=1; i<=len1; i++){
for(j=1; j<=len2; j++){
if(s1[i-1]==s2[j-1]) {
dp[i][j] = dp[i-1][j-1]+1;
max0 = max(dp[i][j],max0);
}
}
}
return max0;
}
int main()
{
printf("%d\n", f("abcdgkkk", "baabcdgadabc"));
return 0;
}