ACM模板——LCS

来源:互联网 发布:光束灯编程教学 编辑:程序博客网 时间:2024/06/01 09:32

代码如下:

#include<iostream> #include<sstream> using namespace std; int v[1000][1000]; short dir[1000][1000];char A[1000],B[1000]; int r,c; int LCS() {        for(int i=1;i<=r;i++)                 for(int j=1;j<=c;j++)                 {                        if(A[i-1]==B[j-1])                         {                                 v[i][j]= v[i-1][j-1]+1;                                 dir[i][j]=1;                         }                         else if(v[i-1][j]>=v[i][j-1])                         {                                 v[i][j]=v[i-1][j];                                 dir[i][j]=0;                         }  else                         {                                 v[i][j]=v[i][j-1];                                  dir[i][j]=2;                        }                 }         return v[r][c]; } void print(int ri,int ci) {         if(ri==0||ci==0)                 return;         if(dir[ri][ci]==1)         {                 print(ri-1,ci-1);                 printf("%c ",A[ri-1]);         }         else if(dir[ri][ci]==0)                 print(ri-1,ci);         else                 print(ri,ci-1); } int main() {   scanf("%s%s",A,B);   r=strlen(A),c=strlen(B);   printf("%d\n",LCS());     print(r,c);     printf("\n");     return 0; } 


原创粉丝点击