• HDU 3788 和九度OJ 1006测试数据是不一样的


    ZOJ问题

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 2935    Accepted Submission(s): 889


    Problem Description
    对给定的字符串(仅仅包括'z','o','j'三种字符),推断他能否AC。

    是否AC的规则例如以下:
    1. zoj能AC;
    2. 若字符串形式为xzojx,则也能AC,当中x能够是N个'o' 或者为空;
    3. 若azbjc 能AC,则azbojac也能AC。当中a,b,c为N个'o'或者为空;
     

    Input
    输入包括多组測试用例,每行有一个仅仅包括'z','o','j'三种字符的字符串,字符串长度小于等于1000。
     

    Output
    对于给定的字符串,假设能AC则请输出字符串“Accepted”,否则请输出“Wrong Answer”。
     

    Sample Input
    zoj ozojo ozoojoo oozoojoooo zooj ozojo oooozojo zojoooo
     

    Sample Output
    Accepted Accepted Accepted Accepted Accepted Accepted Wrong Answer Wrong Answer
     


    #include<stdio.h>
    #include<string.h>
    char s[2001];
    char s2[2001];
    void check()
    {
        int cnt=0;
        memset(s2,0,sizeof(s2));
        int flag1,flag2,flag3;
        flag1=flag2=flag3=-1;
        int len=strlen(s);
        if(strcmp("zoj",s)==0)
        {
            printf("Accepted
    ");
            return ;
        }
        else
        {
            for(int i=0;i<len;++i)
            {
                if(s[i]!='z'&&s[i]!='o'&&s[i]!='j')
                {
                    flag3=1;
                    break;
                }
            }
            for(int i=0;i<len;++i)
            {
                if(s[i]=='z')
                {
                    flag1=i;
                    break;
                }
            }
            for(int i=len-1;i>=0;--i)
            {
                if(s[i]=='j')
                {
                    flag2=i;
                    break;
                }
            }
            if(flag1>flag2||flag1==-1||flag2==-1||flag3==1)
            {
                printf("Wrong Answer
    ");
            }
            else
            {
                 for(int i=flag1+1;i<flag2;i++){
                        if(s[i]=='o'){
                            cnt++;
                        }//统计z、j中间o的个数
                 }
                 if(cnt!=flag2-flag1-1||cnt==0){//推断z、j中间是否出现除o以外的字符。cnt=0是zoj中间没有出现o。不合法。
                     printf("Wrong Answer
    ");
                 }
                 else{
                     //j后面的o的个数除以z前面的o的个数等于z和j之间的o的个数
                     if(flag1*cnt==len-flag2-1){
                         printf("Accepted
    ");
                     }
                     else{
                         printf("Wrong Answer
    ");
                     }
                 }
            }
        }
    }
    int main(int argc, char *argv[])
    {
        while(~scanf("%s",s))
        {
            check();
        }
        return 0;
    }
    


    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    新的页面事件的添加
    excel里数字0不显示
    VB6接口、对象比较等
    SQL SERVER服务停止和启动命令行
    如何更改VS2008的字体和大小
    如何部署windows service
    模式应用 - 利用工厂模式制作自己的"小程序测试工厂"
    解决Oracle Temp01.dbf不断变大的问题
    如何配置VS2008让它用外置IIS进行调试
    使用JQuery Autocomplete插件(一)
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4737626.html
Copyright © 2020-2023  润新知