wyh2000 and a string problem(bc题)
2015-07-19 00:50
381 查看
wyh2000 and a string problem
Accepts: 428 Submissions: 1313 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)问题描述青年理论计算机科学家wyh2000在教小学生一些基础的字符串概念。 定义一个字符串s的子序列为将s中一些元素删掉得到的字符串。可以删掉全部元素,可以不删,也可以只删一些。 他还教了小学生如何判断一个串是不是另一个串的子序列。比如给你一个串,要求判断wyh是不是它的子序列,那么你只需要找一个w,找一个y,再找一个h,使得w在y前面,y在h前面即可。 有一天小学生拿着一个串问他“wyh是不是这个串的子序列?” 但是wyh2000有重度近视眼,如果字符串中有一段连续的v(至少两个),那么他会把它看成一个w。例如,字符串vvv会被看成w,字符串vvwvvv会被看成www,字符串vwvv会被看成vww。 请问wyh2000会怎么回答这个问题?输入描述
第一行为数据组数T(1≤T≤105)。 接下来T行,每行一个字符串,表示小学生拿来问wyh2000的串。 总串长不超过3145728。只包含小写字母。 hack数据字符串长度不超过100000。输出描述
对于每组数据,如果wyh2000会把wyh看成该串的子串,那么输出一行Yes,否则输出一行No。输入样例
4 woshiyangli woyeshiyangli vvuuyeh vuvuyeh输出样例
No Yes Yes No
AC代码:
#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>using namespace std;const int T=3145738;char str[T];int main(){int n,i,fw,fy,fh;scanf("%d",&n);while(n--){scanf("%s",&str);fw=0;fy=0;fh=0;for(i=0;str[i]!='\0';++i){if(str[i]=='w'){fw=1;}if(fw&&str[i]=='y'){fy=1;}if(fy&&str[i]=='h'){fh=1;printf("Yes\n");break;}if(str[i]=='v'&&str[i+1]=='v'){fw=1;}}if(!fh){printf("No\n");}}return 0;}
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- C++ Custom Control控件向父窗体发送对应的消息
- C++中拷贝构造函数的应用详解