zoukankan      html  css  js  c++  java
  • HDU 5284

    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
    ");
    68                         break;
    69                     }
    70                 }
    71                 if(i==l2)
    72                 {
    73                     printf("No
    ");
    74                 }
    75             }
    76             else
    77             {
    78                 printf("No
    ");
    79             }
    80         }
    81         else
    82         {
    83             printf("No
    ");
    84         }
    85 
    86     }
    87     return 0;
    88 }
  • 相关阅读:
    lamp环境的搭建
    http与HTTPS的区别
    共有多少协议
    海纳百川下载器(道客巴巴免费下载器)程序已停止工作解决方法
    海纳百川下载器使用方法图文详解
    怎么用几何画板打出角度符号?
    几何画板怎样画半圆
    如何使用Adobe Reader复制PDF文档上的文字
    ADOBE READER把PDF转换成WORD教程
    photoshopcs6破解补丁用来干嘛的
  • 原文地址:https://www.cnblogs.com/qioalu/p/4657812.html
Copyright © 2011-2022 走看看