个人模板【最长公共连续子序列】

来源:互联网 发布:睿聚淘宝培训 编辑:程序博客网 时间:2024/05/21 11:29
#include<bits/stdc++.h>  using namespace std;    void getLCS(char* str1, char* str2)  {      int len1 = strlen(str1);      int len2 = strlen(str2);      int matrix[len1]; //str1为x方向      //初始化matrix      for (int i = 0; i < len1; i++)      {          matrix[i] = 0;      }      int maxValue;//str2为y方向,最多有len2个最大值      int maxIndex;      //初始化maxValue和maxIndex      maxValue = -1;      maxIndex = -1;      for (int i = 0; i < len2; i++)      {          for (int j = len1 - 1; j >= 0; j--)          {              //扫描str1与str2的各个字符的匹配情况              if (str2[i] == str1[j])              {                  if (j == 0)                  {                      matrix[j] = 1;                  }                  else                  {                      matrix[j] = matrix[j - 1] + 1;                  }              }              else              {                  matrix[j] = 0;              }              if (matrix[j] != 0 && matrix[j] > maxValue)              {                  //更新maxValue的值                  maxValue = matrix[j];                  maxIndex = j;              }          }      }      for(int i = maxIndex - maxValue +1; i < maxIndex + 1; i++)      {          printf("%c",str1[i]);      }      printf("\n");  }    int main()  {      int n;      char a[101],b[101];      while(scanf("%d",&n)==1)      {          for(int i=0; i<n; i++)          {              scanf("%s%s",a,b);              getLCS(a,b);          }      }  }  

原创粉丝点击