zoukankan      html  css  js  c++  java
  • hdu 5311 Hidden String (BestCoder 1st Anniversary ($))(深搜)

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

    Hidden String

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)
    Total Submission(s): 1499    Accepted Submission(s): 534


    Problem Description
    Today is the 1st anniversary of BestCoder. Soda, the contest manager, gets a string s of length n. He wants to find three nonoverlapping substrings s[l1..r1]s[l2..r2]s[l3..r3] that:

    1. 1l1r1<l2r2<l3r3n

    2. The concatenation of s[l1..r1]s[l2..r2]s[l3..r3] is "anniversary".
     
    Input
    There are multiple test cases. The first line of input contains an integer T (1T100), indicating the number of test cases. For each test case:

    There's a line containing a string s (1|s|100) consisting of lowercase English letters.
     
    Output
    For each test case, output "YES" (without the quotes) if Soda can find such thress substrings, otherwise output "NO" (without the quotes).
     
    Sample Input
    2 annivddfdersewwefary nniversarya
     
    Sample Output
    YES NO
     
    Source
     

    题目大意:给两个字符串s,str[] = "anniversary";

    将str分成三个部分问这三个部分能否在s中找到

    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    #include<stdlib.h>
    #define N 110
    
    using namespace std;
    
    int len;
    char s[N], str[] = "anniversary";
    
    bool DFS(int d, int l1, int l2)//d表示搜索的层次,l1表示从s的l1位置处开始,l2表示str从l2位置处开始,二者进行比较
    {
        int i, a, b;
        if(l2 == 11)
            return true;//搜到str的完整序列,且之前搜索的层次不大于3
        if(d > 3)
            return false;//搜索的层次大于3则返回false
        for(i = l1 ; i < len ; i++)
        {
            a = i;//表示从s的a位置处开始
            b = l2;//表示从str的b位置处开始
            if(s[i] == str[l2])
            {
                while(s[a] == str[b] && a < len && b < 11)
                {
                    a++;
                    b++;
                }
                if(DFS(d + 1, a, b))
                    return true;
            }
        }
        return false;
    }
    
    int main()
    {
        int t;
        scanf("%d", &t);
        while(t--)
        {
            scanf("%s", s);
            len = strlen(s);
            if(DFS(1, 0, 0))
                printf("YES
    ");
            else
                printf("NO
    ");
        }
        return 0;
    }
  • 相关阅读:
    【leetcode】Search a 2D Matrix
    【leetcode】Minimum Path Sum
    LCD1602和LCD12864
    Keil建立第一个ARM工程的步骤
    Keil建立第一个C51工程的步骤
    STM32 GPIO寄存器 IDR ODR BSRR BRR
    STM32F10x_StdPeriph_Driver_3.5.0(中文版).chm的使用
    如何查看stm32固件库版本及MDK和keil uvision的关系
    stm32时钟系统
    stm32f103和s3c2440配置
  • 原文地址:https://www.cnblogs.com/qq2424260747/p/4775450.html
Copyright © 2011-2022 走看看