zoukankan      html  css  js  c++  java
  • hdu1501 记忆化搜索

    题意:
          给你三个字符串,问你前两个能不能拼成第三个串。


    思路:

          直接记忆化神搜就行,思路水,看下代码就知道了。这个题目我感觉最大公共子序列dp的作法是错的,虽然有人ac了,随便一组数据比如 abc abc abccba。


    #include<stdio.h>
    #include<string.h>
    
    char c1[222] ,c2[222] ,c3[444];
    int mark[222][222];
    int ok ,l1 ,l2 ,l3;
    
    void DFS(int n1 ,int n2 ,int n3)
    {
         if(n3 == l3 + 1)
         {
              ok = 1;
              return ;
         }
          if(mark[n1][n2]) return;
          mark[n1][n2] = 1;
          if(n1 <= l1 && c3[n3] == c1[n1] && !ok)
          {
               DFS(n1 + 1 ,n2 ,n3 + 1);
          }
          
          if(n2 <= l2 && c3[n3] == c2[n2] && !ok)
          {            
              DFS(n1 ,n2 + 1 ,n3 + 1);
          }
    }
    
    int main ()
    {
        int t ,cas = 1;
        scanf("%d" ,&t);
        while(t--)
        {
             scanf("%s %s %s" ,c1 ,c2 ,c3);
             l1 = strlen(c1) - 1;
             l2 = strlen(c2) - 1;
             l3 = strlen(c3) - 1;
             if(l1 + 1 + l2 + 1 != l3 + 1)
             {
                  printf("Data set %d: no
    " ,cas ++);
                  continue;
              } 
              ok = 0;
              memset(mark ,0 ,sizeof(mark));
              DFS(0 ,0 ,0);
              if(ok) printf("Data set %d: yes
    " ,cas ++);
              else printf("Data set %d: no
    " ,cas ++);
          }
          return 0;
    }     
             
        
        
    

  • 相关阅读:
    Beta 第七天
    Beta 第六天
    Beta 第五天
    Beta 第四天
    Beta 第三天
    Beta 第二天
    Beta 凡事预则立
    Beta 第一天
    Beta 集合
    打造专属测试平台5-使用Docker部署MySQL数据库
  • 原文地址:https://www.cnblogs.com/csnd/p/12063121.html
Copyright © 2011-2022 走看看