zoukankan      html  css  js  c++  java
  • Common Subsequence(最长公共子序列DP)

    题意简述:求两个字符串的最长公共子序列的长度

    思路:最经典的最长公共子序列的长度(LCS问题)。动态转移方程如下:字符串X和字符串Y,dp[i][j]表示的是X的前i个字符和Y的前j个字符的最长公共子序列长度。如果

           X[i]==Y[j],那么新的LCS+1;如果X[i]!=Y[j],则分别考察dp[i-1][j],和dp[i][j-1],区较大者即可。

    #include <iostream>
    #include <string>
    #include <cmath>
    
    
    using namespace std;
    const int MAX=500;
    int dp[MAX][MAX]={0};
    
    int main()
    {
    
        int len1,len2;
        string str1,str2;
    
        while(cin>>str1>>str2)
        {
            len1=str1.length();
            len2=str2.length();
    
            for(int i=1;i<=len1;i++)
                for(int j=1;j<=len2;j++)
                    //状态转移方程
                        if(str1[i-1]==str2[j-1])
                            dp[i][j]=dp[i-1][j-1]+1;
                        else
                            dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
    
           cout<<dp[len1][len2]<<endl;
        }
        return 0;
    }
  • 相关阅读:
    Mysql基本数据操作
    Mysql安装及自动化部署脚本方案
    CSS应用内容补充及小实例
    CSS详解
    python 装饰器
    HTML基础
    python 异常处理
    python生成器及迭代器
    python模块(二)
    python字符串格式化
  • 原文地址:https://www.cnblogs.com/xiaoying1245970347/p/4695714.html
Copyright © 2011-2022 走看看