首页 > 其他 > 详细

最长公共子串

时间:2014-02-08 15:51:13      阅读:346      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
#include <stdlib.h>
#include <stdio.h>

#define MAX 10

int comMatrix[MAX][MAX];
char comstr[MAX];

char *commonString(char string1[], char string2[])
{
    int len1=0,len2=0;
    int flag=0;
    int max=0;
    int i, j;

    while(string1[len1]!=\0) len1++;
    while(string2[len2]!=\0) len2++;

    for(i=0;i<len1;i++)
    {
        for(j=0;j<len2;j++)
        {
            if(string1[i]==string2[j]) comMatrix[i][j]=1;
            else comMatrix[i][j]=0;

            if(i>0&&j>0&&comMatrix[i][j]==1) comMatrix[i][j]+=comMatrix[i-1][j-1];

            if(comMatrix[i][j]>=max)
            {
                max=comMatrix[i][j];
                flag=j;
            }
        }

    }

    for(i=0,j=flag-max+1;j<=flag;i++,j++)
    {
        comstr[i]=string2[j];
    }
    comstr[max]=\0;

    return comstr;
}


int main()
{
    char *A="aomcdf", *B="pmcdfa";

    printf("%s\n", commonString(A, B));
}
bubuko.com,布布扣

 将字符串问题转化为矩阵问题,并且在矩阵构造过程中求解

 

最长公共子串

原文:http://www.cnblogs.com/mr-redrum/p/3509150.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!