最大公共子串的长度模板

#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
char a[1003],b[1003];
int dp[1003][1003],len;
int main()
{
    int num;
    scanf("%d",&num);
    getchar();
    while(num--)
    {
        int i,j,k=0;
        scanf("%s",a);
        len=strlen(a);
        for(i=0;i<len;i++)
            b[i]=a[len-i-1];
        memset(dp,0,sizeof(dp));
        for(i=0; i<len; i++)
            for(j=0; j<len; j++)
            {
                if(a[i]!=b[j])
                    dp[i+1][j+1]=max(dp[i+1][j],dp[i][j+1]);
                else
                    dp[i+1][j+1]=dp[i][j]+1;
            }
        printf("%d\n",dp[len][len]);
    }
}


posted @ 2017-05-04 10:36  X_na  阅读(155)  评论(0编辑  收藏  举报