#include<stdio.h>
#include<string.h>
#include<cstring>
int m[1005][1005];
int max(int a,int b){
int max;
max = a >= b ? a : b;
return max;
}
int main(){
int length1,length2;
char str1[1005],str2[1005];
while(~scanf("%s %s",&str1,&str2)){
length1 = strlen(str1);
length2 = strlen(str2);
memset(m,0,sizeof(m));
for(int i = 1 ; i <= length1 ; i++){
for(int j = 1 ; j <= length2 ; j++){
if(str1[i - 1] == str2[j - 1]){
m[i][j] = m[i - 1][j - 1] + 1;
}
else
m[i][j] = max(m[i - 1][j],m[i][j - 1]);
}
}
printf("%d\n",m[length1][length2]);
}
return 0;
}
Common Subsequence(相同字符的总数dp)
最新推荐文章于 2021-02-27 04:48:44 发布
本文介绍了一个使用C语言实现的最长公共子序列(LCS)算法。通过输入两个字符串,程序能够找出这两个字符串之间的最长公共子序列,并返回该子序列的长度。此算法基于动态规划思想,利用二维数组存储中间结果避免重复计算。
&spm=1001.2101.3001.5002&articleId=77531153&d=1&t=3&u=20a658eba00143fbac967dc1066d3ad6)
162

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



