zoukankan      html  css  js  c++  java
  • Match the string--hdu1797(模拟)

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

    就是模拟

    我的思路是标记aba 和h的位置

    然后就判断是否正确  就行了

    还有就是  最后 fkfkfkfk交叉也可以

    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <queue>
    #include <cstdio>
    #include <cstdlib>
    #include <cctype>
    #include <math.h>
    #include <ctype.h>
    
    using namespace std;
    #define memset(a,b) memset(a,b,sizeof(a))
    #define N 101000
    typedef long long  ll;
    char str[N];
    
    int main()
    {
        int T;
    
        scanf("%d",&T);
        while(T--)
        {
            int flag=0;
            scanf("%s",str);
            int len=strlen(str);
            int abc,h;
            abc=h=-1;
            if(strstr(str,"aba"))
                abc=strstr(str,"aba")-str;
            if(strstr(str,"h"))
                h=strstr(str,"h")-str;
            if(abc==-1 || h==-1 || h==len-1)
                flag=1;
            for(int i=0; i<abc; i++)
            {
                if(str[i]!='a')
                {
                    flag=1;
                    break;
                }
            }
            int v1=0,v2=0;
            for(int i=abc+3; i<h; i++)
            {
                if(str[i]!='b' && str[i]!='d')
                {
                    flag=1;
                    break;
                }
                if(str[i]=='d' && str[i]=='b')
                {
                    flag=1;
                    break;
                }
                if(str[i]=='b')
                    v1++;
                if(str[i]=='d')
                    v2++;
            }
            if(v1!=0 && v2==0)
                flag=1;
            if(v1>1)
                flag=1;
            v1=v2=0;
            for(int i=h+1; str[i]; i++)
            {
                if(str[i]!='f' && str[i]!='k')
                {
                    flag=1;
                    break;
                }
                if(str[i]=='f')
                    v1++;
                if(str[i]=='k')
                    v2++;
            }
            if(v1==0 && v2==0)
                flag=1;
            if(v1==0 && v2==0 && v1!=v2)
                flag=1;
            if(flag==1)
                printf("NO
    ");
            else
                printf("YES
    ");
        }
        return 0;
    }
  • 相关阅读:
    第五次作业
    第四次作业
    第三次作业
    第二次作业
    第5次作业
    4
    第三次
    2
    11
    第五次作业
  • 原文地址:https://www.cnblogs.com/linliu/p/5399242.html
Copyright © 2011-2022 走看看