• 最长公共子序列


    #include<iostream>
    #include<string>
    #include<cstring>
    using namespace std;
    int LCS(string a, string b){
      int n=a.length();
      int m=b.length();
      int **C=new int* [n+1];
      for (int i=0; i<n+1; i++)
        C[i]=new int[m+1];
      for (int i=0; i<n+1; i++)
        C[i][0]=0;
      for (int j=0; j<m+1; j++)
        C[0][j]=0;
      //int C[n+1][m+1];
      //for (int i=0; i<n+1; i++)
      //  C[i][0]=0;
      //for (int j=0; j<m+1; j++)
      //  C[0][j]=0;
      for (int i=1; i<n+1; i++){
        for (int j=1; j<m+1; j++){
          if (a[i-1]==b[j-1])
            C[i][j]=C[i-1][j-1]+1;
          else if (C[i-1][j]>C[i][j-1])
            C[i][j]=C[i-1][j];
          else
            C[i][j]=C[i][j-1]; 
        }
      }
      int len=C[n][m];
      for (int i=0; i<n; i++)
        delete[] C[i];
      delete[] C;
      //memset(C, 0, sizeof(C));
      return len;
    }
    int main(){
      int t;
      string a, b;
      cin>>t;
      while (t--){
        cin>>a;
        cin>>b;
        int k=LCS(a, b);
        cout<<k<<endl;
      }
    }
    

      

  • 相关阅读:
    android slidingview
    关于打工
    android开发基本流程
    android and javascript
    android listview and scrollview
    google收购的公司
    android反编译
    android资料
    colors
    【读书笔记】-- 文本可视化研究综述
  • 原文地址:https://www.cnblogs.com/a863886199/p/6628549.html
Copyright © 2020-2023  润新知