zoukankan      html  css  js  c++  java
  • alg_DP: LCS ( longest common substring )

    #include  <stdio.h>
    #include  <stdlib.h>
    #include  <string.h>

    //Run By LCS.
    // O (m*n)
    // DP implementation
    const char* GetSameString (char const* ArgA,char const* ArgB, int *pN){
     int nA = strlen(ArgA);
     int nB = strlen(ArgB);
     if (!nA || !nB) return 0;
     
     int* CompareArr=new int[nB];
     int max=0,maxJ=0;
     for(int iloop=0;iloop<nA;iloop++){
          for(int jloop=nB-1;jloop>=0;jloop--){
               CompareArr[jloop]=(ArgB[jloop]==ArgA[iloop])?( (iloop==0||jloop==0)?1:CompareArr[jloop-1]+1):0;
               if(CompareArr[jloop]>=max)
               {
                    max=CompareArr[jloop];
                    maxJ=jloop;
               }
          }
     }
     delete []CompareArr;
     if(max>0)
     {
      *pN = max;
      return ArgB+maxJ-max+1;
     }
     else
        return 0;
    }


    void main()
    {
        printf("LCS algorithm to get the longest common substring of 2 strings.\n");
        printf("input string 1:\n");
        char s1[500];
        scanf("%s", s1);
        printf("input string 2:\n");
        char s2[500];
        scanf("%s", s2);
        int N;
        const char *p = GetSameString(s1, s2, &N);
        if(p)
        {
            printf("s2 pos:%d, length %d\n", p-s2, N);
            for(const char *pp=p; pp<p+N; pp++)
                putchar(*pp);
            printf("\n");
        }
        else
            printf("No common\n");
    }
  • 相关阅读:
    leetcode------Add Two Numbers
    leetcode------Reverse Bits
    leetcode------Edit Distance
    leetcode------Rotate Image
    leetcode------Spiral Matrix
    leetcode------Sort Colors
    [转载]C#中的WebBrowser控件的使用
    [转载]WebBrowser控件表单(form)的自动填写和提交
    通过WebBrowser获取网页验证码
    HTMLDocument命名空间/引用
  • 原文地址:https://www.cnblogs.com/cutepig/p/1956927.html
Copyright © 2011-2022 走看看