4月16日东北大学校赛重现赛G题(经典问题)

来源:互联网 发布:mysql主从复制原理 编辑:程序博客网 时间:2024/04/28 19:06

题目大意:输入一个t,代表测试组数,然后输入t行,每行两个字符串,求每行中两个字符串的最大公共子序列。

解题思路:正如题目所说,这是一道经典的求两个字符串最大公共子序列的问题。

AC代码:

#include <iostream>#include <string.h>using namespace std;int t;int n,m;int maxvalue;int c[5005][5005];char a[5005];char b[5005];int main(){    cin>>t;    while(t--)    {        cin>>a>>b;        maxvalue=0;        n = strlen(a);        m = strlen(b);        memset(c,0,sizeof(c));        for(int i=1;i<=n;i++)        {            for(int j=1;j<=m;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];                }                if(maxvalue<c[i][j])maxvalue = c[i][j];//              cout<<c[i][j]<<endl;            }        }        cout<<maxvalue<<endl;    }    return 0;}


0 0
原创粉丝点击