博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模拟 之 zoj 3818 Pretty Poem
阅读量:5134 次
发布时间:2019-06-13

本文共 2873 字,大约阅读时间需要 9 分钟。

//  [9/12/2014 Sjm]/*按题目要求进行模拟。。。当初比赛时,WA了4次才AC掉,仅仅因为一句话:	The symbol A, B and C are different continuous non-empty substrings of the poem.*/
1 #include 
2 #include
3 #include
4 #include
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\n");75 }76 else printf("No\n");77 }78 return 0;79 }

 

转载于:https://www.cnblogs.com/shijianming/p/4140804.html

你可能感兴趣的文章
3月29日AM
查看>>
利用IP地址查询接口来查询IP归属地
查看>>
HTML元素定义 ID,Class,Style的优先级
查看>>
构造者模式
查看>>
http和https的区别
查看>>
Hbuild在线云ios打包失败,提示BuildConfigure Failed 31013 App Store 图标 未找到 解决方法...
查看>>
找到树中指定id的所有父节点
查看>>
今天新开通了博客
查看>>
AS3优化性能笔记二
查看>>
ElasticSearch(站内搜索)
查看>>
4----COM:a Generative Model for group recommendation(组推荐的一种生成模型)
查看>>
UVA 11137 - Ingenuous Cubrency
查看>>
js阻止事件冒泡的两种方法
查看>>
Java异常抛出
查看>>
74HC164应用
查看>>
变量声明和定义的关系
查看>>
Wpf 之Canvas介绍
查看>>
linux history
查看>>
jQuery on(),live(),trigger()
查看>>
Python2.7 urlparse
查看>>