ZJU 3818 - Pretty Poem(暴力枚举)

题意

问能不能构造出ABABA或者ABABCBA

思路

暴力枚举ABC

代码

 
 
  1. #include <bits/stdc++.h>
  2. #define LL long long
  3. #define lowbit(x) ((x) & (-x))
  4. const int MAXN = 50 + 5;
  5. const int INF = 0x3f3f3f3f;
  6. using namespace std;
  7. char temp[MAXN];
  8. int main()
  9. {
  10. //freopen("input.txt", "r", stdin);
  11. int T, i, j, n;
  12. scanf("%d%*c", &n);
  13. for (int ii = 0; ii < n; ii++)
  14. {
  15. string str;
  16. bool flag = false;
  17. char ch;
  18. scanf("%s", temp);
  19. for (i = 0; i < strlen(temp); i++)
  20. if (isalpha(temp[i])) str += temp[i];
  21. int len = str.size();
  22. for (i = 1; i * 2 < len; i++)
  23. {
  24. if (flag) break;
  25. for (j = 1; j * 2 + i * 3 <= len; j++)
  26. {
  27. string ab;
  28. int curLen = i * 3 + j * 2;
  29. string a = str.substr(0, i);
  30. string b = str.substr(i, j);
  31. if (a == b)
  32. continue;
  33. if (curLen > len)
  34. continue;
  35. else if (curLen == len)
  36. {
  37. ab = a + b;
  38. ab += ab;
  39. string ans = ab + a;
  40. if (ans == str)
  41. {
  42. flag = true;
  43. break;
  44. }
  45. }
  46. else
  47. {
  48. ab = a + b;
  49. ab += ab;
  50. int k = 1;
  51. while (k + ab.size() + a.size() + b.size() < len) k++;
  52. string c = str.substr((i + j) * 2, k);
  53. if (c == a || c == b)
  54. continue;
  55. string ans = ab + c + a + b;
  56. if (ans == str)
  57. {
  58. flag = true;
  59. break;
  60. }
  61. }
  62. }
  63. }
  64. printf("%s\n", flag ? "Yes" : "No");
  65. }
  66. return 0;
  67. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值