• HDU


    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1501

    #include <iostream>
    #include <string.h>
    using namespace std;
    /****************************************************************************************************************
                题意:给定三个字符串 s1,s2,s3。判断s3是否可以通过s1,s2字符的顺序得到
                思路:
                1,刚开始也是想到搜索之类的,然后看到网上说记忆化搜索!记忆化,换而言之就是dp啊
                2,最优子结构分析:如上例,如果A、B可以组成C,那么,C最后一个字母e,必定是 A 或 C 的最后一个字母组成。
                3,C去除除最后一位,就变成是否可以求出 A-1和B 或者 A与B-1 与 是否可以构成 C-1
                4,状态转移方程:
                    用f[i][j] 表示 表示A前 i 为 和B 前j 位是否可以组成 C的前i+j位
                    dp[i][j]= (dp[i-1][j]&&(a[i]==c[i+j]))||(dp[i][j-1]&&(b[j]==c[i+j]))
    ****************************************************************************************************************/
    string s1,s2,s3;
    int dp[205][205];
    int main()
    {
        int T;
        cin>>T;
        int num=1;
        while(T--)
        {
            cin>>s1>>s2>>s3;
    
            memset(dp,0,sizeof(dp));
            for(int i = 0;i < s1.size();i ++)
                if(s1[i] == s3[i])
                    dp[i+1][0]=1;
            for(int i = 0;i < s2.size();i ++)
                if(s2[i] == s3[i])
                    dp[0][i+1]=1;
    
            for(int i = 1;i <= s1.size();i ++)
                for(int j = 1;j <= s2.size();j ++)
                    dp[i][j]=((dp[i-1][j] && s1[i-1] == s3[i+j-1]) || (dp[i][j-1] && s2[j-1] == s3[i+j-1]));
            cout<<"Data set "<<num++<<": ";
            if(dp[s1.size()][s2.size()])
                cout<<"yes"<<endl;
            else
                cout<<"no"<<endl;
        }
        return 0;
    }
    



  • 相关阅读:
    【Forza Horizon 5】频繁断网解决办法
    【Java】java.util.ConcurrentModificationException
    【MySQL】下发功能SQL
    【MybatisPlus】 Field '主键' doesn't have a default value
    【SpringBoot】数据源加密处理
    【VMware】将NAT虚拟机开放访问
    TreeView绑定数据库收藏
    存储过程概述
    asp.net页面直接输出纯xml
    如何保证远程登录服务器安全
  • 原文地址:https://www.cnblogs.com/Jstyle-continue/p/6352000.html
Copyright © 2020-2023  润新知