注意这里讲的是连续,也就是substring,不是subsquence
我们有两个方法,动态规划和直尺法。
dp:建一个c[i][j]数组,表示在第i比较中,最长的连续长度
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#define N 500010
using namespace std;
int longest_substring(char *s1,char *s2)
{
int i,j,k,len1,len2,max,x,y;
len1=strlen(s1);
len2=strlen(s2);
int **c = new int*[len1+1];
for(i = 0; i < len1+1; i++)
c[i] = new int[len2+1];
for(i=