zoukankan      html  css  js  c++  java
  • 2080最长公共子序列问题(DP)

    Description

    给定两个序列 X={x1,x2,…,xm} 和 Y={y1,y2,…,yn},找出X和Y的最长公共子序列。

    Input

    输入数据有多组,每组有两行 ,每行为一个长度不超过500的字符串(输入全是大写英文字母(A,Z)),表示序列X和Y。

    Output

    每组输出一行,表示所求得的最长公共子序列的长度,若不存在公共子序列,则输出0。

    Sample

    Input 

    ABCBDAB
    BDCABA

    Output 

    4
     1 #include <iostream>
     2 #include <algorithm>
     3 #include <string.h>
     4 #include <string>
     5 #define inf 0x3f3f3f3f
     6 using namespace std;
     7 
     8 int main()
     9 {
    10     int len1, len2, i, j;
    11     char s1[505], s2[505];
    12     int dp[505][505];
    13     while(gets(s1)&&gets(s2))
    14     {
    15         len1 = strlen(s1);
    16         len2 = strlen(s2);
    17         memset(dp, 0, sizeof(dp));
    18         for(i=1;i<=len1;i++)
    19         {
    20             for(j=1;j<=len2;j++)
    21             {
    22                 if(s1[i-1]==s2[j-1]) dp[i][j] = dp[i-1][j-1] + 1;
    23                 else dp[i][j] = max(dp[i][j-1], dp[i-1][j]);
    24             }
    25         }
    26         cout << dp[len1][len2] << endl;
    27     }
    28     return 0;
    29 }
  • 相关阅读:
    【互联网的一些事】
    ASP.NET
    C#、ASP.NET、WinForm
    ASP.NET
    ASP.NET
    ASP.NET
    我用过的Linux命令--修改主机名
    我用过的Linux命令--关闭防火墙
    Hadoop学习笔记(2)hadoop框架解析
    Hadoop学习笔记(1)概述
  • 原文地址:https://www.cnblogs.com/0xiaoyu/p/14090735.html
Copyright © 2011-2022 走看看