最长公共子序列问题

参考:https://blog.csdn.net/someone_and_anyone/article/details/81044153

题目链接

#include
 using namespace std;
 int main()
 {
     char a[505],b[505];
     while(gets(a)!=NULL)
     {
         gets(b);
         int i,j;
         int c[505][505];
         int len1=strlen(a);
         int len2=strlen(b);
         for(i=0;i<=len1;i++)
         {
             c[i][0]=0;
         }
         for(j=0;j<=len2;j++)
         {
             c[0][j]=0;
         }
         for(i=1;i<=len1;i++)
         {
             for(j=1;j<=len2;j++)
             {
                 if(a[i-1]==b[j-1])
                 {
                     c[i][j]=c[i-1][j-1]+1;
                 }
                 else
                 {
                     c[i][j]=max(c[i-1][j],c[i][j-1]);
                 }
             }
         }
         printf("%d\n",c[len1][len2]);
     }
     return 0;
 }

你可能感兴趣的:(子段问题)