zoukankan      html  css  js  c++  java
  • P2543 [AHOI2004]奇怪的字符串

    题目描述

    输入输出格式

    输入格式:

    输入文件中包含两个字符串X和Y。当中两字符串非0即1。序列长度均小于9999。

    输出格式:

    X和Y的最长公共子序列长度。

    输入输出样例

    输入样例#1: 复制
    01010101010 00000011111
    输出样例#1: 复制
    6
    输入样例#2: 复制
    01011 010010101111111111
    输出样例#2: 复制
    5


    /*DP
        我们可以知道,在每一个位置有三种状态,i表示a串下标,j表示b串下标。
        1、a[i]==b[i] --> dp[i][j]=dp[i-1][j-1]+1
        2、a[i]!=b[j]--> dp[i][j]=max(dp[i][j-1],dp[i-1][j]  
        所以判断每个位置的状态,DP求解就可以了。 
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    
    string a,b;
    int dp[10001][10001];
    
    int main()
    {
        cin>>a>>b;
        int la=a.length(),lb=b.length();
        for(int i=1;i<=la;i++)    //从1开始,避免数组下标变负 
        {
            for(int j=1;j<=lb;j++)
            {
                if(a[i-1]==b[j-1]) dp[i][j]=dp[i-1][j-1]+1;
                else dp[i][j]=max(dp[i][j-1],dp[i-1][j]);
            }
        }
        printf("%d",dp[la][lb]);
        return 0;
    }
  • 相关阅读:
    BZOJ 4525 二分
    BZOJ 4565 状压DP
    BZOJ 3930 容斥原理
    BZOJ 4562 搜索...
    BZOJ 4563 错排+高精度
    BZOJ 1833 数位DP
    BZOJ 4517 组合数+错排
    python 入门学习(二)
    python 入门学习
    Python 爬虫
  • 原文地址:https://www.cnblogs.com/lovewhy/p/8717625.html
Copyright © 2011-2022 走看看