zoukankan      html  css  js  c++  java
  • hdu 1501 Zipper

    http://acm.hdu.edu.cn/showproblem.php?pid=1501

    两种做法:1.dfs,2,直接推

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <cstring>
     4 #include <algorithm>
     5 #define maxn 1000
     6 using namespace std;
     7 
     8 int dp[maxn][maxn];
     9 char str1[maxn],str2[maxn],str3[maxn];
    10 bool flag;
    11 bool vis[maxn][maxn];
    12 
    13 void dfs(int p1,int p2,int pos)
    14 {
    15     if(str3[pos]=='') flag=true;
    16     if(flag||vis[p1][p2]) return ;
    17     vis[p1][p2]=true;
    18     if(str1[p1]==str3[pos])
    19         dfs(p1+1,p2,pos+1);
    20     if(str2[p2]==str3[pos])
    21         dfs(p1,p2+1,pos+1);
    22 }
    23 
    24 int main()
    25 {
    26     int n;
    27     while(scanf("%d",&n)!=EOF)
    28     {
    29         for(int cas=1; cas<=n; cas++)
    30         {
    31             scanf("%s %s %s",str1+1,str2+1,str3+1);
    32             str1[0]='@'; str2[0]='@';str3[0]='@';
    33             int k1=strlen(str1);
    34             int k2=strlen(str2);
    35             for(int i=1; i<k1; i++)
    36             {
    37                 if(str1[i]==str3[i]) dp[i][0]=1;
    38             }
    39             for(int i=1; i<k2; i++)
    40             {
    41                 if(str2[i]==str3[i]) dp[0][i]=1;
    42             }
    43             for(int i=1; i<k1; i++)
    44             {
    45                 for(int j=1; j<k2; j++)
    46                 {
    47                     dp[i][j]=(dp[i-1][j]&&str1[i]==str3[i+j])||(dp[i][j-1]&&str2[j]==str3[i+j]);
    48                 }
    49             }
    50             printf("Data set %d: ",cas);
    51             memset(vis,false,sizeof(vis));
    52             flag=false;
    53             dfs(1,1,1);
    54             if(flag) printf("yes
    ");
    55             else printf("no
    ");
    56         }
    57     }
    58     return 0;
    59 }
    View Code
  • 相关阅读:
    软件测试:Homework 3
    软件测试:Lab 1
    软件测试:Homework 2
    软件测试:Homework 1
    JAVA的回忆
    Java 操作符
    Java 笔录
    经典C#编程理解,概要,经典
    网络精灵
    签到计时
  • 原文地址:https://www.cnblogs.com/fanminghui/p/3862347.html
Copyright © 2011-2022 走看看