• HDU 5311 Hidden String (优美的暴力)



    Hidden String

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)

    Total Submission(s): 52    Accepted Submission(s): 25



    Problem Description
    Today is the 1st anniversary of BestCoder. Soda, the contest manager, gets a strings 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 integerT(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
     
    题目链接:http://acm.hdu.edu.cn/showproblem.php?

    pid=5311

    题目大意:问在一个字符串里能不能找到连续三个区间拼成anniversary

    题目分析:暴力,枚举每段的长度

    #include <cstdio>
    #include <cstring>
    char s[200], con[] = "anniversary";
    
    int main()
    {
        int T;
        scanf("%d", &T);
        while(T--)
        {
            scanf("%s", s);
            int len = strlen(s);
            bool flag = false;
            for(int i = 0; i <= 8; i++)
            {
                for(int j = i + 1; j <= 9; j++)
                {
                    int k = 0;
                    while(k < len && strncmp(con, s + k, i + 1) != 0)
                        k ++;
                    if(k == len) 
                        break;
                    k += i + 1;
                    while(k < len && strncmp(con + i + 1, s + k, j - i) != 0)
                        k ++;
                    if(k == len) 
                        break;
                    k += j - i;
                    while(k < len && strncmp(con + j + 1, s + k, 10 - j) != 0)
                        k ++;
                    if(k != len)
                    {
                        flag = true;
                        break;
                    }
                }
            }
            if(flag) 
                puts("YES");
            else 
                puts("NO");
        }
    }




  • 相关阅读:
    常用Linux命令
    SQL必知必会-笔记
    【ubuntu】install openbox+tint2+bmenu on ubuntu12.04.4
    【ruby】安装Ruby
    【ruby】快速安装gems的方法
    【sinatra】设置默认的端口
    【sinatra】修改默认ip绑定
    【sinatra】结合Padrino framework
    【sinatra】安装测试
    【rails3教材】博客构建过程2
  • 原文地址:https://www.cnblogs.com/mthoutai/p/6898597.html
Copyright © 2020-2023  润新知