coder_new

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
#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));
}

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

 

posted on 2014-02-08 10:50  coder_new  阅读(187)  评论(0编辑  收藏  举报