首页 > 代码库 > ZOJ3818-Pretty Poem(暴力枚举)
ZOJ3818-Pretty Poem(暴力枚举)
题目链接
题意:求所给字符串是否符合ABABA或者ABABCAB的形式,如果可以的话输出Yes,不可以的话为No。
思路:暴力枚举A和B的长度,再用从长度减去3倍的AB长度,即为C的长度,看组合而成的字符串是否与给定的相等。在这里string中的substr函数是个好东西。
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <algorithm> using namespace std; char str[55]; int main() { int cas; scanf("%d", &cas); while (cas--) { scanf("%s", str); string s; int len = strlen(str); for (int i = 0; i < len; i++) if (isupper(str[i]) || islower(str[i])) s += str[i]; len = s.length(); int flag = 0; for (int i = 1; i < len / 2 && !flag; i++) { for (int j = 1; j < len / 2 && !flag; 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 = 1; break; } if (len - (i + j) * 3 > 0) { string AB = A + B; string C = s.substr(2 * (i + j), len - (i + j) * 3); if (A == C || B == C) continue; if (AB + AB + C + AB == s) { flag = 1; break; } } } } if (flag) printf("Yes\n"); else printf("No\n"); } return 0; }
ZOJ3818-Pretty Poem(暴力枚举)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。