南阳理工OJ_题目36 最长公共子序列

来源:互联网 发布:广联达软件官方网站 编辑:程序博客网 时间:2024/06/06 03:15
#include <iostream>#include <cstdio>#include <cstring>using namespace std;int dp(int , int );char ch1[1010];char ch2[1010];int d[1010][1010];int main(){    int T;    cin >> T;    //scanf("%d", &T);    //getchar();    while(T--)    {        int len1, len2;        //fgets(ch1+1, 1010, stdin);可能是我想多了把,本来还以为字符串中会有空格呢        //fgets(ch2+1, 1010, stdin);        cin >> (ch1+1) >> (ch2+1);        len1 = strlen(ch1+1);        len2 = strlen(ch2+1);        memset(d, 0, sizeof(d));        cout << dp(len1, len2) << endl;    }}int dp(int len1, int len2){    for(int i = 1; i <= len1; i++)        for(int j = 1; j <= len2; j++)        {            if(ch1[i] == ch2[j])                d[i][j] = d[i-1][j-1] + 1;            else                d[i][j] = d[i-1][j] > d[i][j-1] ? d[i-1][j] : d[i][j-1];        }    return d[len1][len2];}

0 0
原创粉丝点击