zoukankan      html  css  js  c++  java
  • HDU 5707 Combine String (DP,LCS变形)

    题意:给定三个字符串,问你第三个是不是由第一个和第二个组成的。

    析:当时比赛是没有做出来啊。。。一直WA,就是没有判断长度,第一个和第二个和是不是和第三个一样,这个忘记。。。

    我们用d[i][j]表示第一个字符串匹配到 i, 第二个匹配到第 j 个,然后只要判断能不能由上一个得到就好。这个主要是d[i][j]==1则表示可以成功匹配

    d[i][j]==0则表示无法成功匹配,那么剩下的就简单了。

    代码如下:

    #include <cstdio>
    #include <string>
    #include <cstdlib>
    #include <cmath>
    #include <iostream>
    #include <cstring>
    #include <set>
    #include <queue>
    #include <algorithm>
    #include <vector>
    #include <map>
    using namespace std ;
    typedef long long LL;
    typedef pair<int, int> P;
    const int INF = 0x3f3f3f3f;
    const double inf = 0x3f3f3f3f3f3f3f;
    const double eps = 1e-8;
    const int maxn = 2000 + 5;
    const int dr[] = {0, 0, -1, 1};
    const int dc[] = {-1, 1, 0, 0};
    //int n, m;
    char s[maxn], t[maxn], ss[maxn];
    int d[maxn][maxn];
    int main(){
    //    int T;  cin >> T;
        while(scanf("%s", s+1) == 1){
            scanf("%s", t+1);
            scanf("%s", ss+1);
            memset(d, 0, sizeof(d));
            int n = strlen(s+1);
            int m = strlen(t+1);
            int ans = 0;
            if(n+m != strlen(ss+1)){
                printf("No
    ");
                continue;
            }
            d[0][0] = 1;
    
            for(int i = 0; i <= n; ++i){
                for(int j = 0; j <= m; ++j){
                    if(ss[i+j] == s[i] && i)  d[i][j] |= d[i-1][j];
                    if(ss[i+j] == t[j] && j)  d[i][j] |= d[i][j-1];
                }
            }
    
            printf("%s
    ", d[n][m] ? "Yes" : "No");
        }
        return 0;
    }
    
  • 相关阅读:
    NodeJs
    xml_MathML的基本知识点__这东西要自己实践最好
    嘻哈帮天通苑_poppin——张锋
    html5_canvas-记忆力卡片游戏
    baidu时光轴_使用window.scroll实现的
    my_poppin_and_me
    chrom_input_click
    Get filename from URL using Javascript
    UBB编辑器
    What is the best Java email address validation method?
  • 原文地址:https://www.cnblogs.com/dwtfukgv/p/5719466.html
Copyright © 2011-2022 走看看