4 woshiyangli woyeshiyangli vvuuyeh vuvuyeh
No Yes Yes No
1001. wyh and string problem 本题是一道送分的字符串题。这里给出两种解法。 1.维护一个类似栈的结构,存储wyh2000实际看到的字符串。扫描整个字符串,每看到两个相邻的v 就往栈中加入一个w ;否则看到什么就加入什么。最后扫一遍看wyh 是不是栈中元素组成的串的子序列即可。 2.我们寻找一个i ,使得si=v 且si+1=v 并且i 尽量小。然后我们寻找一个j ,使得sj=w 且j 尽量小。我们再寻找一个k ,使得sk=y,min(i+1,j)<k 且k 尽量小。然后我们寻找一个l ,使得sl=h,k<l 。如果我们能找到符合条件的i,k,l 或符合条件的j,k,l ,那么答案就是Yes ,否则答案就是No 。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int MAX= 3145728+5;
char a[MAX];
int main()
{
int t;
char tar[4]="wyh";
scanf("%d",&t);
while(t--)
{
int flag=0;
int i=0,j=0,k=0;
scanf("%s",a);
for(i=0;a[i+1];i++)
{
if((a[i]=='v'&&a[i+1]=='v'))
{
a[i]='w';
}
if(a[i]==tar[k])
{
k++;
}
if(k==3)
{
flag=1;
break;
}
}
for(;a[i];i++)
{
if(a[i] == tar[k]) k++;
if(k == 3)
{
flag=1;
break;
}
}
if(flag)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
return 0;
}
青年理论计算机科学家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
版权声明:本文为博主原创文章,未经博主允许不得转载。
HDU-5284-wyh2000 and a string problem(BestCoder Round #48 ($))
原文地址:http://blog.csdn.net/qq_16542775/article/details/46967137