#include<stdio.h>
#include <string.h>
#include<iostream>
using namespace std;
char a[1005],b[1005];
int dp[1005][1005];
int main(){
int n,i,j;
scanf("%d",&n);
while(n--){
scanf("%s",a);
scanf("%s",b);
memset(dp,0,sizeof(dp));
for(i=1;a[i-1]!='\0';i++)
for(j=1;b[j-1]!='\0';j++)
if(a[i-1]==b[j-1])
dp[i][j]=dp[i-1][j-1]+1;
else
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
printf("%d\n",dp[i-1][j-1]);
}
return 0;
}
本文介绍了一个使用动态规划解决最长公共子序列问题的C/C++程序实现。通过两字符串作为输入,程序能够找出这两个字符串之间的最长公共子序列,并输出其长度。
598

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



