题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=36
基本动态规划水题~
代码记录一下:
#include "stdio.h"
#include "string.h"
#define N 1005
int dp[N][N];
char s1[N],s2[N];
int MAX(int x,int y) { return x>y?x:y; }
int main()
{
int T;
int len1,len2;
int i,j;
scanf("%d",&T);
getchar();
while(T--)
{
scanf("%s %s",s1+1,s2+1);
len1 = strlen(s1+1);
len2 = strlen(s2+1);
memset(dp,0,sizeof(dp));
for(i=1 ;i<len1+1; ++i)
{
for(j=1; j<len2+1; ++j)
{
dp[i][j] = MAX(dp[i-1][j],dp[i][j-1]);
if(s1[i]==s2[j])
dp[i][j] = dp[i-1][j-1]+1;
}
}
printf("%d\n",dp[i-1][j-1]);
}
return 0;
}