zoukankan      html  css  js  c++  java
  • ZOJ2401 Zipper 双塔式 DP(双塔DP)

    第二次遇到双塔DP,再写一下。
    (flag是为了避免memset多次导致的时间浪费)
    
    
    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<cstring>
    using namespace std;
    char x[410],y[410],z[410];
    int map[410][410],L,Lx;//410=210+x 
    bool _find(int flag)
    {
        for(int i=1;i<=L;i++)
        {
            for(int j=0;j<=min(Lx,i);j++)
             if(map[i-1][j]==flag)
              {
                 if(j+1<=min(Lx,i)&&x[j+1]==z[i]) map[i][j+1]=flag;
                 if(y[i-j]==z[i]) map[i][j]=flag;
              }
        }
        if(map[L][Lx]==flag) return true;
        return false;
    }
    int main()
    {
        int T;
        cin>>T;
        for(int i=1;i<=T;i++)
        {
            map[0][0]=i;
            scanf("%s",x+1);
            scanf("%s",y+1);
            scanf("%s",z+1);
            Lx=strlen(x+1);
            L=strlen(z+1);
            if(_find(i)) printf("Data set %d: yes
    ",i);
            else printf("Data set %d: no
    ",i);
        }
        return 0;
    }
    
    
    
    
    
  • 相关阅读:
    Kettle学习(2)
    kettle学习(1)
    Quartz在Spring中的使用
    JVM垃圾收集简介
    快速排序

    20190827最新论文
    GNN
    Multimodal Machine Learning
    Wasserstein距离 及两多元高斯分布间的W距离
  • 原文地址:https://www.cnblogs.com/hua-dong/p/7603937.html
Copyright © 2011-2022 走看看