码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 5284

时间:2015-07-18 22:39:04      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

wyh2000 and a string problem 

http://acm.hdu.edu.cn/showproblem.php?pid=5284

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,使得wy前面,yh前面即可。
有一天小学生拿着一个串问他“wyh是不是这个串的子序列?”
但是wyh2000有重度近视眼,如果字符串中有一段连续的v(至少两个),那么他会把它看成一个w。例如,字符串vvv会被看成w,字符串vvwvvv会被看成www,字符串vwvv会被看成vww。
请问wyh2000会怎么回答这个问题?
输入描述
第一行为数据组数T(1T105)。
接下来T行,每行一个字符串,表示小学生拿来问wyh2000的串。
总串长不超过3145728。只包含小写字母。
hack数据字符串长度不超过100000。
输出描述
对于每组数据,如果wyh2000会把wyh看成该串的子串,那么输出一行Yes,否则输出一行No
输入样例
4
woshiyangli
woyeshiyangli
vvuuyeh
vuvuyeh
输出样例
No
Yes
Yes
No



技术分享


 1 #include <stdio.h>
 2 #include <string.h>
 3 char s[3145728],s1[3145728];
 4 int main()
 5 {
 6     int T,len,count1,k1,l1,l2,i,k;
 7     scanf("%d",&T);
 8     while(T--)
 9     {
10         scanf("%s",s);
11         len=strlen(s);
12         count1=0;
13         k1=0;
14         for(int i=0; i<len; i++)
15         {
16             if(s[i]==v)
17             {
18                 count1++;
19             }
20             else
21             {
22                 if(count1>=2)
23                 {
24                     s1[k1++]=w;
25                 }
26                 else if(count1==1)
27                 {
28                     s1[k1++]=v;
29                 }
30                 count1=0;
31                 s1[k1++]=s[i];
32             }
33         }
34         if(count1>=2)
35         {
36             s1[k1++]=w;
37         }
38         else if(count1==1)
39         {
40             s1[k1++]=v;
41         }
42         l1=-1;
43         for(int i=0; i<k1; i++)
44         {
45             if(s1[i]==w)
46             {
47                 l1=i;
48                 break;
49             }
50         }
51         l2=-1;
52         if(l1>=0&&l1<=k1-3)
53         {
54             for(i=l1+1; i<k1; i++)
55             {
56                 if(s1[i]==h)
57                 {
58                     l2=i;
59                 }
60             }
61             if(l2!=-1)
62             {
63                 for(i=l1+1; i<=l2-1; i++)
64                 {
65                     if(s1[k]==y)
66                     {
67                         printf("Yes\n");
68                         break;
69                     }
70                 }
71                 if(i==l2)
72                 {
73                     printf("No\n");
74                 }
75             }
76             else
77             {
78                 printf("No\n");
79             }
80         }
81         else
82         {
83             printf("No\n");
84         }
85 
86     }
87     return 0;
88 }

 

HDU 5284

标签:

原文地址:http://www.cnblogs.com/qioalu/p/4657812.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!