//最长公共子序列
#include <iostream>
#include <algorithm>
#include <ctime>
#include <string>
#include <cmath>
#include <cstdlib>
#include <vector>
#include <map>
#include <queue>
#include <set>
using namespace std;
int main()
{
char str1[210],str2[210]; int maxLen[210][210];
while(scanf("%s%s",str1+1,str2+1)>0)
{
int length1=strlen(str1+1);
int length2=strlen(str2+1);
int tmp;
for(int i=0; i<=length1 ; i++) //定义边界
maxLen[i][0]=0;
for(int i=0; i<=length2 ; i++)
maxLen[0][i]=0;
for(int i=1; i<=length1 ; i++)
{
for(int j=1; j<=length2 ; j++)
{
if(str1[i] == str2[j])
maxLen[i][j]=maxLen[i-1][j-1]+1;
else
{
maxLen[i][j]=max(maxLen[i][j-1],maxLen[i-1][j]);
}
}
}
cout << maxLen[length1][length2] << endl;
}
}
动态规划-求最长公共子序列
最新推荐文章于 2024-09-20 11:29:31 发布