题意:
给出一个字符串,问这个字符串去掉标点符号之后能不能写成ABABA或者ABABCAB的形式
解题丝路:
字符串长度只有50所以可以暴力求解,这里要注意,abc必须要两两不同。
#include<iostream> #include<cstring> #include<cstdio> using namespace std; char str[100],sss[100],len; bool isABABA(){ int a,b,i,j,k; for(a=1;a<len;a++){ for(b=1;b<len;b++){ if((a*3+b*2)==len){ for(i=0;i<a;i++){ if(!(str[i]==str[i+a+b]&&str[i]==str[i+a+a+b+b])){ goto run; } } for(i=0;i<b;i++){ if(!(str[i+a]==str[i+a+b+a])){ goto run; } } if(a==b){ int flag=0; for(i=0;i<b;i++){ if(str[i+a]!=str[i]){ flag=1; break; } } if(flag==0)goto run; } // cout<<"niconiconi"<<a<<" "<<b<<endl; return 1; } run:; } } return 0; } bool isABABCAB(){ // cout<<str<<endl; int a,b,i,j,k,c; for(a=1;a<len;a++){ for(b=1;b<len;b++){ if((a*3+b*3)<len){ c=len-a*3-b*3; for(i=0;i<a;i++){ if(!(str[i]==str[i+a+b]&&str[i]==str[i+a+a+b+b+c])){ goto run1; } } for(i=0;i<b;i++){ if(!(str[i+a]==str[i+a+b+a]&&str[i+a]==str[i+a+b+a+b+c+a])){ goto run1; } } if(c==a){ int flag=0; for(i=0;i<a;i++){ if(str[i]!=str[i+a+a+b+b]){ flag=1; break; } } if(flag==0)goto run1; } if(c==b){ int flag=0; for(i=0;i<b;i++){ if(str[i+a]!=str[i+a+a+b+b]){ flag=1; break; } } if(flag==0)goto run1; } if(a==b){ int flag=0; for(i=0;i<b;i++){ if(str[i+a]!=str[i]){ flag=1; break; } } if(flag==0)goto run1; } // cout<<"fuckniconiconi"<<a<<" "<<b<<" "<<c<<endl; return 1; } run1:; } } return 0; } int main(){ int cas,i,j,k; cin>>cas; while(cas--){ cin>>sss; int l=strlen(sss); len=0; for(i=0;i<l;i++){ if((sss[i]>='a'&&sss[i]<='z')||(sss[i]>='A'&&sss[i]<='Z')){ str[len++]=sss[i]; } } str[len]='\0'; if(isABABA()||isABABCAB()){ printf("Yes\n"); }else{ printf("No\n"); } } return 0; }
相关推荐
训练时发现的好题目。#include #include int main() { char ch; char str[100]; while(gets(str)) { if(str[0] == 'E') return 0; int z = 0, o = 0, j = 0, i = 0; while(str[i] !...}
ZOJ解题报告ZOJ解题报告ZOJ解题报告ZOJ解题报告
zoj题目简单归类zoj题目简单归类zoj题目简单归类
acm中zoj1002的可运行C++程序
包含了zoj700多道题目的源代码,在做题时可以参考
深度搜索 回溯 int main { string s1 s2; while cin >> s1 >> s2 { count 0; cout << "[" << endl; if s1 length s2 length BackTrake s1 s2 ;... [更多]
Problem Arrangement zoj 3777
ZOJ题目答案源码
一个非常非常非常非常实用的zoj结题代码
学习ACM程序设计的朋友一定要看,这是训练必备的POJ ZOJ题目分类及解题思路
zoj 1003 c语言的,要写这么多描述吗。。
ZOJ1805代码
本代码是zoj上AC的1951的代码,把双重循环简化为O(n),不过素数判断的改进还不够
浙大ZOJ题目分类,可以让你更方便快速锁定那你想要联系的题目,是自己快速提高·
zoj1027解题指南和代码,还不错,是学校培训给的。
ZOJ题解集合-截至2835。共1244个文件,C/C++,有重复
zoj 题库 详细解答 解题代码 acm
zoj4041正确题解源代码,以及运行程序
大学ACM竞赛,ZOJ 1733 运用递归(优化)的方法。ac的代码。
zoj吐血制作,希望大家喜欢