您的位置:首页 > 编程语言 > C语言/C++

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++