• hdu 6170 Two strings


    dp[i][j]代表s1的前i个字符和s2的前j个字符匹配的情况,记录此时s2[j-1]匹配的字符。-1代表不匹配,0代表s2[j-1]匹配空字符。

    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<iostream>
    #include<queue>
    #include<map>
    #include<cmath>
    #include<set>
    #include<stack>
    #define ll long long
    #define pb push_back
    #define max(x,y) ((x)>(y)?(x):(y))
    #define min(x,y) ((x)>(y)?(y):(x))
    #define cls(name,x) memset(name,x,sizeof(name))
    #define fs first
    #define sc second
    #define mp make_pair
    #define L(x) (1<<x)
    #define next Next
    using namespace std;
    const int inf=1e9+10;
    const ll llinf=1e16+10;
    const int maxn=25e2+10;
    const int maxm=1e3+10;
    const int mod=1e9+7;
    char s1[maxn],s2[maxn];
    int len1,len2;
    char dp[maxn][maxn];
    int main()
    {
        //freopen("in.txt","r",stdin);
        int ncas;
        scanf("%d",&ncas);
        while(ncas--)
        {
            scanf("%s %s",s1,s2);
            cls(dp,-1);
            len1=strlen(s1);
            len2=strlen(s2);
            dp[0][0]=0;
            for(int i=0;i<=len1;i++)
            {
                for(int j=1;j<=len2;j++)
                {
                    if(s1[i-1]==s2[j-1] && dp[i-1][j-1]!=-1 &&i!=0)
                        dp[i][j]=s1[i-1];
                    else if( s2[j-1]=='.' && dp[i-1][j-1]!=-1 &&i!=0)
                        dp[i][j]=s1[i-1];
                    else if(s2[j-1]=='*')
                    {
                        if(dp[i-1][j-1]==s1[i-1])//由前一个重复
                            dp[i][j]=s1[i-1];
                        else if(dp[i-1][j]==s1[i-1])//当前的重复
                            dp[i][j]=s1[i-1];
                        if((dp[i][j-2]!=-1&&j!=1)||dp[i][j-1]!=-1)//重复0次或1次
                            dp[i][j]=0;
                    }
                }
            }
            printf("%s
    ",dp[len1][len2]!=-1?"yes":"no");
        }
        return 0;
    }
  • 相关阅读:
    微信支付开发
    dz插件开发(一) 从常用的常量 变量 函数开始
    收集bootstrap的几个常用用法---tooltip提示框
    ucenter接口
    php防止表单重复提交
    支付宝接口 CI上集成
    telnet模拟post 调试的时候很好用
    __call 实现函数方法不同参数个数的重载
    微赞的分页
    结合微赞发布家和小程序流程
  • 原文地址:https://www.cnblogs.com/mgz-/p/7413488.html
Copyright © 2020-2023  润新知