zoj 3818 Pretty Poem(暴力枚举)
2014-09-08 15:16
302 查看
题目链接:zoj 3818 Pretty Poem
题目大意:给定一个字符串,忽略标点符号,考虑是否押韵,即为ABABA或者ABABCAB形式。
解题思路:暴力枚举A,B的长度,判断即可, 注意A,B,C非空,并且不相同。
题目大意:给定一个字符串,忽略标点符号,考虑是否押韵,即为ABABA或者ABABCAB形式。
解题思路:暴力枚举A,B的长度,判断即可, 注意A,B,C非空,并且不相同。
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; int n; char s[105]; bool check (int a, int b, int l) { for (int i = 0; i < l; i++) if (s[a + i] != s[b + i]) return false; return true; } bool judge (int l, int r, int flag) { int a = l + r; if (flag == 1) { if (!check(0, a, l) || !check(0, a*2, l)) return false; if (!check(l, l + a, r)) return false; } else { int c = n - 3 * a; if (!check(0, a, a) || !check(0, a*2+c, a)) return false; if (l == c && check(0, 2*a, c)) return false; if (r == c && check(l, 2*a, c)) return false; } if (l == r && l == 1 && s[0] == s[1]) return false; return true; } bool solve () { scanf("%s", s); n = 0; int len = strlen(s); for (int i = 0; i < len; i++) if ((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z')) s[n++] = s[i]; s = '\0'; for (int i = 1; i < n; i++) { for (int j = 1; j < n; j++) { if (3 * i + 2 * j == n && judge(i, j, 1)) return true; if (3 * (i + j) < n && judge(i, j, 2)) return true; } } return false; } int main () { int cas; scanf("%d", &cas); while (cas--) { printf("%s\n", solve() ? "Yes" : "No"); } return 0; }
相关文章推荐
- 2014牡丹江网络赛ZOJPretty Poem(暴力枚举)
- ZOJ 3818 Pretty Poem(暴力)牡丹江网赛
- zoj 3818 Pretty Poem(暴力处理字符串)2014年牡丹江赛区网络赛
- ZOJ - 3818 Pretty Poem 暴力
- ZOJ 3818 Pretty Poem (暴力模拟 string(substr))
- ZJU 3818 - Pretty Poem(暴力枚举)
- ZOJ 3818 Pretty Poem(暴力求解)
- ZOJ 3818 Pretty Poem 字符串
- ZOJ Problem Set - 3818 Pretty Poem
- ZOJ 3813 Pretty Poem (暴力)
- ZOJ3818-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 牡丹江网络赛J题
- ZOJ 3818 Pretty Poem 字符串
- 【瞎搞】ZOJ 3818 Pretty Poem 牡丹江网络赛J题
- [ACM] zoj 3818 Pretty Poem (2014 ACMICPC Regional 牡丹江站网络赛 J题)