zoukankan      html  css  js  c++  java
  • 模拟 之 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 }
  • 相关阅读:
    背景大图隔几秒切换(非轮播,淡入淡出)--变形金刚joy007 项目总结
    call(京基填小票拍照片)
    加载图片、倒计时--Columbia项目总结
    kellogg项目总结
    js 跨域
    js 继承inheritance/extends
    一号店分享会
    日历,类似旅行网站的酒店入住
    js 数组的判断
    Building a Non-blocking TCP server using OTP principles
  • 原文地址:https://www.cnblogs.com/shijianming/p/4140804.html
Copyright © 2011-2022 走看看