• hdu 6170


    dp:

    http://blog.csdn.net/qq_28954601/article/details/77484676

    #include <bits/stdc++.h>
    #define mt(a,b) memset(a,b,sizeof(a))
    using namespace std;
    const int maxn = 2525;
    bool dp[maxn][maxn];
    char s[maxn];
    char t[maxn];
    int main()
    {
        int T;
        scanf("%d",&T);
        getchar();
        while(T--)
        {
            scanf("%s",s+1);
            scanf("%s",t+1);
            s[0]=t[0]='1';
            int len1=strlen(s)-1;
            int len2=strlen(t)-1;
            mt(dp,false);
            dp[0][0]=true;
            for(int i=1;i<=len2;++i){
                if(i==2&&t[i]=='*') dp[i][0]=true;
                for(int j=1;j<=len1;++j){
                    if(t[i]==s[j]||t[i]=='.'){
                        dp[i][j]=dp[i-1][j-1]; //如果正常匹配的话,dpij就是从dpi-1j-1转移过来的
                    }else if(t[i]=='*'){
                        dp[i][j]=dp[i-1][j]|dp[i-2][j];//如果这个*号的前面一个或者前面的第二个可以匹配到j位置的,则可以,我觉得是使用在多个*的时候的
                        if((dp[i-1][j-1]||dp[i][j-1])&&s[j-1]==s[j]) //如果是sj-1==sj的话,可以自己举例子看看就会清楚这是什么情况了
                            dp[i][j] = true;
                    }
                }
            }
            puts(dp[len2][len1]?"yes":"no");
        }
        return 0;
    }
  • 相关阅读:
    时间戳计算
    .NET/C#/Oracle数据库操作类
    memcached安装及.NET中的Memcached.ClientLibrary使用
    C# Redis
    Jmeter教程 简单的压力测试
    Elasticsearch查询类型
    Windows 如何查看本地端口被进程占用的情况?
    Log4net 配置
    NLog 配置
    RPC原理
  • 原文地址:https://www.cnblogs.com/chinacwj/p/7416704.html
Copyright © 2020-2023  润新知