• 模拟 之 zoj 3818 Pretty Poem


    //  [9/12/2014 Sjm]
    /*
    按题目要求进行模拟。。。
    当初比赛时,WA了4次才AC掉,仅仅因为一句话:
    	The symbol A, B and C are different continuous non-empty substrings of the poem.
    */
     1 #include <iostream>
     2 #include <cstdlib>
     3 #include <cstdio>
     4 #include <string>
     5 using namespace std;
     6 
     7 string Ini(string str) {
     8     string t_str = "";
     9     for (int i = 0; i < str.size(); ++i) {
    10         if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= '1' && str[i] <= '9')) {
    11             t_str += str[i];
    12         }
    13     }
    14     return t_str;
    15 }
    16 
    17 bool JudgeOne(string str) {
    18     if (str.size() < 5) { return false; }
    19     int len = str.size();
    20     for (int i = 1; i <= len/3; ++i) {
    21         string t_str_begin = str.substr(0, i), t_str_end = str.substr(len - i, i);
    22         if (t_str_begin != t_str_end) { continue; }
    23         else {
    24             string t_str = str.substr(i, len - 2 * i);
    25             int t_len = t_str.size();
    26             if ((t_len - i)/2 == 0) { continue; }
    27             if (0 != (t_len - i) % 2) { continue; }
    28             string tt_str_be = t_str.substr(0, (t_len - i) / 2), tt_str_en = t_str.substr((t_len - i) / 2 + i, (t_len - i) / 2);
    29             if (tt_str_be != tt_str_en) { continue; }
    30             if (tt_str_be == t_str_begin) { continue; }
    31             string strToJudge = t_str.substr((t_len - i) / 2, i);
    32             if (strToJudge == t_str_begin) {
    33                 return true;
    34             }
    35         }
    36     }
    37     return false;
    38 }
    39 
    40 bool JudgeTwo(string str) {
    41     if (str.size() < 7) { return false; }
    42     int len = str.size();
    43     for (int i = 2; i <= len/3; ++i) {
    44         string str_begin = str.substr(0, i), str_end = str.substr(len - i, i);
    45         if (str_begin != str_end) { continue; }
    46         if ((2 == i) && (str_begin[0] == str_begin[1])) { continue; }
    47         string t_str = str.substr(i, i);
    48         if (t_str == str_begin)  {
    49             if (0 == len - i * 3) { continue; }
    50             string tt_str = str.substr(i * 2, len - i * 3);
    51             int mylen = t_str.size();
    52             for (int k = 1; k < mylen; ++k) {
    53                 string A = t_str.substr(0, k);
    54                 string B = t_str.substr(k, mylen - k);
    55                 if (A != B && A != tt_str && B != tt_str) {
    56                     return true;
    57                 }
    58             }
    59         }
    60     }
    61     return false;
    62 }
    63 
    64 int main() {
    65     //freopen("input.txt", "r", stdin);
    66     int T;
    67     scanf("%d", &T);
    68     getchar();
    69     while (T--) {
    70         string str;
    71         getline(cin, str);
    72         str = Ini(str);
    73         if (JudgeOne(str) || JudgeTwo(str)) {
    74             printf("Yes
    ");
    75         }
    76         else printf("No
    ");
    77     }
    78     return 0;
    79 }
  • 相关阅读:
    PHP 日志专题
    ThinkPHP 3.2 用户注册邮箱验证帐号找回密码
    ThinkPHP 3.2 用户注册邮箱验证激活帐号
    ThinkPHP 3.2 vendor()方法的深入研究及Phpqrcode的正确扩展
    基于Composer的Laravel扩展包开发工作流
    如何利用showdoc自动生成API文档
    PHP中的几个随机数生成函数
    isset在php5.6-和php7.0+的一些差异
    PHP学习方向-进阶2(三)
    Jupyter Notebook 下安装 PHP 内核
  • 原文地址:https://www.cnblogs.com/shijianming/p/4140804.html
Copyright © 2020-2023  润新知