最长公共子序列 LCS

来源:互联网 发布:手机查看电脑桌面软件 编辑:程序博客网 时间:2024/05/24 04:50

感觉这里最烦人的是字符串从0开始存,所以应该注意位置与下标的区别

#include <iostream>  #include <algorithm>  #include <cstdio>  #include <cstring>      using namespace std;  const int N = 510;        int main()  {          char x[N], y[N];    int len1, len2;    int len[N][N];    while(~scanf("%s%s", x, y))    {        len1 = strlen(x);        len2 = strlen(y);        memset(len, 0, sizeof(len));        for(int i = 1; i <= len1; i++)        {            for(int j = 1; j <= len2; j++)            {                if(x[i-1] == y[j-1])                    len[i][j] = len[i-1][j-1] + 1;                else                    len[i][j] = max(len[i][j-1], len[i-1][j]);            }            }         int MAX = 0;        for(int i = 1; i <= len1; i++)            for(int j = 1; j <= len2; j++)                if(len[i][j] > MAX)                    MAX = len[i][j];        printf("%d\n", MAX);    }          return 0;  }  


原创粉丝点击