ZOJ 3818 Pretty Poem (暴力模拟 string(substr))
来源:互联网 发布:麦田的守望者 知乎 编辑:程序博客网 时间:2024/05/29 20:03
Poetry is a form of literature that uses aesthetic and rhythmic qualities of language. There are many famous poets in the contemporary era. It is said that a few ACM-ICPC contestants can even write poetic code. Some poems has a strict rhyme scheme like "ABABA" or "ABABCAB". For example, "niconiconi" is composed of a rhyme scheme "ABABA" with A = "ni" and B = "co".
More technically, we call a poem pretty if it can be decomposed into one of the following rhyme scheme: "ABABA" or "ABABCAB". The symbolA, B and C are different continuous non-empty substrings of the poem. By the way, punctuation characters should be ignored when considering the rhyme scheme.
You are given a line of poem, please determine whether it is pretty or not.
Input
There are multiple test cases. The first line of input contains an integerT indicating the number of test cases. For each test case:
There is a line of poem S (1 <= length(S) <= 50).S will only contains alphabet characters or punctuation characters.
Output
For each test case, output "Yes" if the poem is pretty, or "No" if not.
Sample Input
3niconiconi~pettan,pettan,tsurupettanwafuwafu
Sample Output
YesYesNo
Author: JIANG, Kai
Source: The 2014 ACM-ICPC Asia Mudanjiang Regional First Round
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5350
题目大意:问除去非字母字符后剩下的字符串是不是满足ABABA或者ABABCAB的结构,其中ABC分别是不同的子串
题目分析:先得到目标字符串,然后分别枚举子串A和B,这里用到stl string里的substr函数( sub = s.substr(startpos, len) ),枚举时枚举到len / 2即可,因为AB显然可能超多len/2,剩下的就是纯粹模拟,关键是substr大法好~
#include <cstdio>#include <cstring>#include <string>using namespace std;char get[55];int main() { int T; scanf("%d", &T); while(T--) { scanf("%s", get); string s; bool flag = false; int len = strlen(get); for(int i = 0; i < len; i++) if((get[i] >= 'A' && get[i] <= 'Z') || (get[i] >= 'a' && get[i] <= 'z')) s += get[i]; len = s.length(); for(int i = 1; i < len / 2; i++) { for(int j = 1; j < len / 2; j++) { string A = s.substr(0, i); string B = s.substr(i, j); if(A == B) continue; if(A + B + A + B + A == s) { flag = true; break; } if((i + j) * 3 < len) { string AB = A + B; string C = s.substr((i + j) * 2, len - (i + j) * 3); if(A == C || B == C) continue; if(AB + AB + C + AB == s) { flag = true; break; } } } if(flag) break; } printf("%s\n", flag ? "Yes" : "No"); }}
- ZOJ 3818 Pretty Poem (暴力模拟 string(substr))
- ZOJ - 3818 Pretty Poem 暴力
- zoj 3818 Pretty Poem(模拟)
- zoj 3818 Pretty Poem(暴力枚举)
- ZOJ 3818 Pretty Poem(暴力求解)
- ZOJ 3818 Pretty Poem 模拟题
- ZOJ 3818 Pretty Poem(模拟题)
- zoj 3818 Pretty Poem (模拟)
- 模拟 之 zoj 3818 Pretty Poem
- ZOJ 3813 Pretty Poem (暴力)
- ZOJ - 3818 Pretty Poem
- zoj 3818 Pretty Poem
- ZOJ 3818 Pretty Poem
- zoj 3818 Pretty Poem
- ZOJ 3818 Pretty Poem
- ZOJ 3818 Pretty Poem(暴力)牡丹江网赛
- ZOJ 3818 Pretty Poem 字符串
- ZOJ 3818 Pretty Poem 字符串
- JSONModel的原理
- LCA最近公共祖先 在线算法和离线算法 模板
- Nginx.conf 中状态信息
- mfc学习笔记(2)——vector容器类型
- VS2010中创建安装项目
- ZOJ 3818 Pretty Poem (暴力模拟 string(substr))
- 网络图片浏览器
- codeforces 24A Ring road
- 利用可变参数,将调试信息写入文件log.txt中
- 如何完成一篇高质量的论文(笔记)
- IOS AutoLayout详解(三)用代码实现(附Demo下载)
- 禁用开启注册表编辑功能
- Head First JQuery学习笔记(二)
- PCB中Add layer 和 Plane 区别