Match the string--hdu1797(模拟)
2016-04-16 20:19
423 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1797
就是模拟
我的思路是标记aba 和h的位置
然后就判断是否正确 就行了
还有就是 最后 fkfkfkfk交叉也可以
就是模拟
我的思路是标记aba 和h的位置
然后就判断是否正确 就行了
还有就是 最后 fkfkfkfk交叉也可以
#include <iostream> #include <cstring> #include <algorithm> #include <queue> #include <cstdio> #include <cstdlib> #include <cctype> #include <math.h> #include <ctype.h> using namespace std; #define memset(a,b) memset(a,b,sizeof(a)) #define N 101000 typedef long long ll; char str ; int main() { int T; scanf("%d",&T); while(T--) { int flag=0; scanf("%s",str); int len=strlen(str); int abc,h; abc=h=-1; if(strstr(str,"aba")) abc=strstr(str,"aba")-str; if(strstr(str,"h")) h=strstr(str,"h")-str; if(abc==-1 || h==-1 || h==len-1) flag=1; for(int i=0; i<abc; i++) { if(str[i]!='a') { flag=1; break; } } int v1=0,v2=0; for(int i=abc+3; i<h; i++) { if(str[i]!='b' && str[i]!='d') { flag=1; break; } if(str[i]=='d' && str[i]=='b') { flag=1; break; } if(str[i]=='b') v1++; if(str[i]=='d') v2++; } if(v1!=0 && v2==0) flag=1; if(v1>1) flag=1; v1=v2=0; for(int i=h+1; str[i]; i++) { if(str[i]!='f' && str[i]!='k') { flag=1; break; } if(str[i]=='f') v1++; if(str[i]=='k') v2++; } if(v1==0 && v2==0) flag=1; if(v1==0 && v2==0 && v1!=v2) flag=1; if(flag==1) printf("NO\n"); else printf("YES\n"); } return 0; }
相关文章推荐
- java 版的复利计算器(张俊毅 周修文)
- UVa 1590 IP Networks
- Web工程目录和tomcat目录
- ajaxSubmit() 上传文件和进度条显示
- C++之类的六个默认成员函数
- 快速幂 快速乘法
- oil deposits——广搜
- acm 算法竞赛 时间
- 配置nodejs环境
- poj 1236
- javascript getElementById 使用方法及用法
- SQL Server 存储过程
- Delegate in UnrealEngine ——虚幻四中的委托
- 20145238-荆玉茗 《Java程序设计》第2次实验
- 匿名方法
- 第7周学习进度
- 全排列算法
- js查看一个函数的执行所用时间
- 安卓开发小知识 - 3
- 操作系统基础及多线程/进程同步